掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信で受信するには? (ID:113147)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ねろさん、ありがとうございます。 今日は忙しくてあまり触れてないのですが、確認できただけ書きます。 >ReadFileは同期読み取りが開始されおり、COMポートからの読み込みが完了するま>でここの場所でハングアップしたような感じで待機の状態になるのでは。 確かに、 Success = ReadFile(hSerialPort, Buffer, BytesWritten, BytesRead, IntPtr.Zero)の BytesWritten(読み取り対象のバイト数)が0の状態でステップ実行していくとReadFileの行でステップ実行が止まってしまいます。ただ、その状態でいくら送信しても次に行きません。 そこで、100と適当な数値を入れてみたら、今度はSuccessがFalseになってしまいました。 そのためDo〜Loopを置いて、COMからのデータを貯めておくバッファがあると仮定してBytesWrittenより多くなった時に、BytesWrittenの量だけBufferに格納してSuccessにTrueを返す、あるいはBytesReadに読み込んだバイト数が入るのでは、と思ったのですがなんだかダメみたいです。 サンプルコードではBytesWrittenが0なのですが、それでどう受信するかがまだ分からないのです。 GotDotNetのサンプルの方は、やっと受信ができました。 こちらは先にデータを送っておき、RXボタンを押したときに「Bytes to read」の値よりデータが少なかった場合はエラーとデータを表示し、データが多かった場合は値の分だけのデータを表示、という感じでした。ただ、どこからデータを取ってきているのかがまだ分かりません。プログラムを追っていこうとしてるのですが初心者のためなかなかうまくいきません。 こんな状態でなかなか解決できませんが、皆様よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.