- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual C++を用いたシリアル通信)
Visual C++を用いたシリアル通信
このQ&Aのポイント
- Visual C++ 2008を使用して、Window Formアプリケーションからシリアルポートを介して外部機器を操作する方法について教えてください。
- 外部機器にデータを送る際、データの先頭にENQ(ASCIIで0x05)を付加する必要があります。c++からASCIIで0x05を送る方法についても教えてください。
- また、strings型の文字をASCII文字に変換する関数などがあるのか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1.さんの回答のほかに、文字列中に書くならば、 8進のエスケープシーケンスで"\005"と書けばよいでしょう。 (コンパイラによっては16進で "\x05" という表記も可能な場合があります。) これで sprintf(toSend, "\005%s", data); のように書けます。 # たぶん sprintf(toSend, "0x05%s", data); のように書いていて困ったのだと # 勝手に想像しながら回答しています。
その他の回答 (2)
- samtomsan
- ベストアンサー率55% (1060/1897)
回答No.3
通信のdllを作っている関係で配列を使ってしまいますが、単に変数にしたら出来るのかな。 BYTE head_data; head_data=0x05; // ENQ serialPort->write(head_data)
質問者
お礼
ありがとうございます。 No2の方の方法でできましたので,今回はクローズさせていただきます。
- samtomsan
- ベストアンサー率55% (1060/1897)
回答No.1
例えば BYTE head_data[1]; head_data[0]=0x05; // ENQ として、このhead_dataを1バイト送信してから目的の文字列を送れば良いと思います。 あるいは必要な配列を取っておいて、先頭に0X05を入れ、二バイト目からテキストボックスの文字列を入れて、配列の先頭から送信するとかですね。
質問者
お礼
ご回答ありがとうございます。 シリアルポートからデータを送るために serialPort->write(head_data[0]) と,書いたらビルドエラーになってしまいました。 配列ですので変数と同じようには扱えないのでしょうか? C++について無知過ぎてわかりませんので,なにとぞご教授お願い致します。
お礼
ありがとうございます。 お教えいただいた方法でデータを送信することができました。 また,なにかありましたら,宜しくお願い致します。