Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信 初心者
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=24889#CommentId65382
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
YUU
 (社会人)
投稿日時
2015/8/5 20:37:16
現在、シリアル通信処理を制御するプログラムを作成しております。
行いたい処理は下記の通りです。
①SerialPortコントロールを利用し受信イベントにてデータをキャッチ。
②データをリッチテキストボックスにて出力。(バイナリデータとテキスト文字列)
③変換されたテキストを項目別(空白毎に区切る)にリストビュー表示
↑を繰り返すアプリケーションを作成しております。
現在②の途中まで作成できたのですが行き詰ってしまい困っております。
リッチテキストボックスを2箇所設置。片方をバイナリデータ、もう片方を変換されたテキストデータ。
バイナリデータの出力は容易に行えたのですがテキストにて変換された文字列をうまく出力できません。
Delegate Sub dlgReceive(ByVal Data As Byte)
Private Sub SerialPort_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
'シリアルポートをオープンしていない場合、処理を行わない
If SerialPort.IsOpen = False Then
Return
End If
Try
Dim RxLen As Integer = SerialPort.BytesToRead '受信バイト数取得
Dim InData(RxLen - 1) As Byte '受信値読み込み配列
SerialPort.Read(InData, 0, RxLen) '読み込み
'1バイトずつメインスレッドにてテキストボックス書込み
For i As Integer = 0 To InData.Length - 1
Me.Invoke(New dlgReceive(AddressOf RcvDataToTextBox), InData(i))
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub RcvDataToTextBox(ByVal Data As Byte)
If IsNothing(Data) = True Then
Return
End If
'バイナリ表記
Dim strBinary As String
strBinary = Convert.ToString(Data, 16).ToUpper() 'HEX変換・大文字
strBinary = strBinary.PadLeft(2, "0"c) '1文字の場合0を付加
Try
Me.txtbox1.AppendText(strBinary & " ")
Me.txtbox1.SelectionStart = Me.txtbox1.Text.Length
Me.txtbox1.ScrollToCaret()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub