Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信の受信データを表示
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30252#CommentId82888
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
vb素人
 (社会人)
投稿日時
2017/7/7 22:54:48
魔界の仮面弁士さま
色々勉強させていただき、ありがとうございます。
まず、送信側ですが、次のコード(PICマイコン)で送信しています。
この送信を無限ループで繰り返しています。
WriteUSART(0x00FF);
delay_ms(500);
WriteUSART(0x00FF);
delay_ms(500);
WriteUSART(1023 >> 8);
delay_ms(50);
WriteUSART(1023 & 0x00FF);
delay_ms(500);
まず、これをXCTU(XBEE通信ソフト)で確認すると、
受信データは、FF FF FF 03 となります。(FF FF FF 03が繰り返される)
続いて、vbで作成しているソフトの動作ですが、
アドバイスいただいた通り、4バイト受信して、
rdat(n)と、rdata(n+1)がそれぞれ、&HFFであることを確認する方法にチャレンジしています。
次のコードで、受信バイトにデータが4バイト以上溜まったら、
2バイトずつ読み取ります。
読み取ったデータをDebugLineで確認した所、次の値が表示されます。
255
0
255
0
255
0
3
0
当たり前かもしれませんが、2バイトに変換しているので、0が余計に入ってきてしまいます。
rdat1bin, rdat2binの配列を1バイトに変換するためには、どのようにすれば良いのでしょうか?
If SerialPort1.ReadBufferSize >= 4 Then
Dim rdat1(4) As Byte
SerialPort1.Read(rdat1, 0, 4)
Dim rdat1bin As Byte() = {rdat1(0), rdat1(1)}
Dim rdat2bin As Byte() = {rdat1(2), rdat1(3)}
Dim rdat1a As Short = CShort(BitConverter.ToInt16(rdat1bin, 0)) '符号付き 2 バイト整数に変換
Dim rdat2a As Short = CShort(BitConverter.ToInt16(rdat2bin, 0)) '符号付き 2 バイト整数に変換
Debug.WriteLine(rdat1a)
Debug.WriteLine(rdat2a)
End If