タイトル : Re^5: シリアル通信の割込み禁止 投稿日 : 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行は不必要ですネ!(多分) ※ 受信されるべきデータのプロトコルが解らないので完全か どうかは、再度検証して下さい。 以上。 |