掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ReadFileで正しく受信データを取得するには? (ID:60917)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
シリアル通信を行うアプリケーションを開発しているのですが、受信データの読み込みについて不具合が起こってしまい困っています。 お分かりになる方いらっしゃいましたら、どうかお力添えいただけると嬉しいです。 当方、開発そのものの経験もあまりなく、ほぼ初心者状態です・・・ 開発環境はVisual C++ 6.0、Windows XP HOME Editionです。 不具合の現象といいますのが、一言で申し上げますと 『複数バイトのデータを受信しても、ReadFileを行うと一番最後のバイトにしかデータが入っていない』 という現象です。 受信側の作りは ・スレッドにて受信 ・非同期でReadFile ・イベント駆動式(1バイト受信したらスレッド内で受信) ・↑WaitCommEventでEV_RXCHARが起きたらデータ受信 というものになっています。 送信側(受信動作のテスト用に作成した送信専用のものです)で1バイトずつデータを送信してみると、スレッド内でイベントが起こるのが1バイト受信した時や3バイト受信した時だったりして、それも「?」という感じなのですが、3バイト受信なら3バイト受信でCOMSTAT構造体でわかるのでいいのですが、その後が問題です。 ReadFileで受信データをこちらで用意したバッファに格納し、その中を見てみると、最後に受信したデータしか入っていないのです。例えば「0x01、0x01、0x01」という3バイトデータを受信してるはずなのに、バッファの中は「00、00、0x01」となっているのです。 最後のデータしか読み出せてないので、1バイト受信時に受信イベントが起こったときは大丈夫なのですが・・・今はテストとして1バイトずつ送信してますが、実際一度に何バイトも受信することになったら話になりませんよね。 うまく不具合のポイントだけ説明できればいいのですが、よく理解していないが為に長くなってしまいすみません。 長くなってしまったので、次のレスで実際のコードを載せますので、おかしな点などありましたらどうかご指摘くださると嬉しいです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.