• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シリアル通信でのバイナリデータの送受信方法)

シリアル通信でのバイナリデータの送受信方法

このQ&Aのポイント
  • シリアル通信でバイナリデータを送受信するための方法を紹介します。
  • バイナリデータを扱うための関数や使用例について教えてください。
  • プログラム初心者のため、必要なコードや情報が不足している場合には指摘してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

その送信のプログラムは問題無いです。 WriteFileの戻り値は、成功すれば「1」で失敗すれば「0」ですが、これはどうなっていますか? あと、dwWrittenには実際に送信できたバイト数が入ります、それは6が入っていませんか? 戻り値が失敗だったり、送信データ数が少なかったら、通信相手や他の問題だと思います。

参考URL:
http://infoseek_rip.g.ribbon.to/spectrum123.at.infoseek.co.jp/vb/vb_2/vb_2.htm
checkshirtbot
質問者

お礼

回答ありがとうございます。 dwWrittenにはちゃんと6が入っていました。 WriteFileの戻り値が0で失敗していたので,質問者様の言うように通信相手や他の問題だと思いますので,そこをあたってみます。 このような初歩的な問題に丁寧に答えてくださりありがとうございました。

その他の回答 (3)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>0x00の時点で文字列の最後と判断されてしまい,それ以降を送受信することができていないと考えているのですが,それは間違いなのでしょうか。 https://msdn.microsoft.com/ja-jp/library/cc429856.aspx を読んで、どこかにそのような動作をするようなこと書かれていますか?

checkshirtbot
質問者

お礼

たびたび回答ありがとうございます。 readfileでの受信の失敗がバイナリデータとして送信できていないためだと勘違いしていました。 大変お騒がせいたしました。

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.2

WriteFileはバイナリデータを扱える関数のはずですが、何故違うと思ったのでしょうか? 0x00 を終端として扱うのは、文字列処理関数だけです。

checkshirtbot
質問者

お礼

回答ありがとうございます。 readfileでの受信の失敗がバイナリデータとして送信できていないためだと勘違いしていました。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

ReadFile,WriteFileでバイナリデータの読み書きできますけど?

checkshirtbot
質問者

補足

そうなのですか? 0x00の時点で文字列の最後と判断されてしまい,それ以降を送受信することができていないと考えているのですが,それは間違いなのでしょうか。 上記のコードで下記の送信コマンドを送ることができているということでしょうか。 02 00 C0 10 03 D0 おそらく非常に初歩的なことを聞いてしまっているかとは思いますが,よろしくお願いします。

関連するQ&A