Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信の受信データを表示
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30252#CommentId82885
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
vb素人
 (社会人)
投稿日時
2017/7/7 17:45:33
魔界の仮面弁士さま
>1023 (&H03FF) の場合は &H53 が含まれないので良さそうですが、
>595 (&H0253) や 21432 (&H53B8) のように、&H53 を含む
>バイナリーが送出されてくる可能性は無いのでしょうか。
おっしゃる通り、今は固定値(1023)で行っていますが、
いずれは、0~1023の値が送出されてきます。
10bit以上の値は送信しないので、65535(FFFF)を受信したら、
そこから2バイト取得する形にしてみました。
(もっと簡単に先頭バイトを見分ける方法があるのかもしれませんが…)
↓のコードで試してみましたが、
「算術演算の結果、オーバーフローが発生しました」とでてしまいました。。。
この方法に無理があるのでしょうか。
Dim rdat(3) As Byte
SerialPort1.Read(rdat, 0, 4)
Dim rdatbin As Byte() = {rdat(3), rdat(2), rdat(1), rdat(0)}
Dim rdata As Short = CShort(BitConverter.ToInt32(rdatbin, 0)) '符号付き 2 バイト整数に変換
Dim rdatb As String = Convert.ToString(rdata, 10) '10進数表記の "1023" に変換
If rdatb = "65535" Then
Dim size As Integer = SerialPort1.BytesToRead
If size < 2 Then
Return
End If
Dim data(size - 1) As Byte
SerialPort1.Read(data, 0, size)
Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), data)
End If