Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信の受信データを表示
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30252#CommentId82892
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
vb素人
 (社会人)
投稿日時
2017/7/9 07:18:37
SerialPort1.BytesToRead >= 4
にすることで、配列内に受信データが格納されるようになりました。
Debug.WriteLineで①、②、③の位置でデータを確認していますが、
送信データ(FF FF FF 03が繰り返される)のどこから受信をし始めるかによって
データが変わってしまいます。
Aパターン
①FF-03-FF-FF
②255
③3
Bパターン
①FF-FF-FF-03
②255
③255
今2つ課題が残っています。
1つ目は、
Aパターンの時は、④の"OK"表示まで進みません。
⇒こちらは、今のやり方ではだめだと感じていますが、他に方法が思い浮かびません。
2つ目は、
Bパターンの時は、④の"OK"表示まで進むのですが、
その後、TextBoxにデータが表示されません。
⇒こちらは何が間違えているのかがよく理解できていません。
If SerialPort1.BytesToRead >= 4 Then
Dim rdat1(3) As Byte
SerialPort1.Read(rdat1, 0, 4)
Debug.WriteLine(BitConverter.ToString(rdat1)) '①
Dim rdat1bin As Byte() = {rdat1(0), rdat1(1)}
Dim rdat2bin As Byte() = {rdat1(2), rdat1(3)}
Dim rdat1a As UShort = BitConverter.ToUInt16(rdat1, 0) '符号付き 2 バイト整数に変換
Dim rdat2a As UShort = BitConverter.ToUInt16(rdat1, 2) '符号付き 2 バイト整数に変換
Dim rdat1b As String = Convert.ToString(rdat1a, 10) '10進数表記の "1023" に変換
Dim rdat2b As String = Convert.ToString(rdat1a, 10) '10進数表記の "1023" に変換
Debug.WriteLine(rdat1(0)) '②
Debug.WriteLine(rdat1(1)) '③
If rdat1(0) = &HFF AndAlso rdat1(1) = &HFF Then
MessageBox.Show("OK") '④
Dim size As Integer = SerialPort1.BytesToRead
If size < 4 Then
Return
End If
Dim data(size - 1) As Byte
SerialPort1.Read(rdat1, 2, 2)
Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), data)
End If
End If