タイトル | : Re^5: シリアル通信の割込み禁止 |
記事No | : 9497 |
投稿日 | : 2009/10/24(Sat) 18:00 |
投稿者 | : オショウ |
> Try > sz = ComSerialPort.ReadTo(vbCr) > mRDataLen = Len(sz) > ComSerialPort.Read(mRDataB, 0, mRDataLen) > Catch ex As Exception > sz = String.Empty > End Try > If sz <> String.Empty Then > :
sz = ComSerialPort.ReadTo(vbCr) ここで、szに読み込んで いるのに・・・ 何故再度、ComSerialPort.Read(mRDataB, 0, mRDataLen) する 必要があるんですか?
受信イベントが発生した時点で、1バイト以上受信バッファに データがある状態で、vbCrまで待って全て読み込むと言う方法 で、一連の文字情報が、szに読み込まれているのに、その後、 再度、読み込み動作させたら、正常な1組のデータを読み捨て て次のデータ受信を行っていることになるので・・・
おかしくなるのは当然・・・
> mRDataLen = Len(sz) > ComSerialPort.Read(mRDataB, 0, mRDataLen)
この2行は不必要ですネ!(多分)
※ 受信されるべきデータのプロトコルが解らないので完全か どうかは、再度検証して下さい。
以上。
|