投稿者 vb素人  (社会人) 投稿日時 2017/7/5 17:18:32
魔界の仮面弁士さま

回答ありがとうございます。

ご指摘の通り、本来は③を使いたいのですが、
①、②を試していた所です。

③(Readメソッド)を使う方法で10bitデータを受信するため、
次のコードでテストしてみました。

ご指摘がありました通り、Option Strict Onの状態で確認しています。
MessageBoxでdataの値を表示させると、「FF」と表示されますが、

その後、次のエラーメッセージが出てきます。
「型'System.Byte[]'のオブジェクトを型'System.String'に変換できません」

このメッセージが出ている所は、
args(0) = data
です。



    Private Delegate Sub Delegate_RcvDataToTextBox(data As Byte)

    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        'シリアルポートをオープンしていない場合、処理を行わない.
        If SerialPort1.IsOpen = False Then
            Return
        End If

        Try
            Dim data(SerialPort1.BytesToRead - 1) As Byte
            SerialPort1.Read(data, 0, data.GetLength(0))


            MessageBox.Show(BitConverter.ToString(data))
            'Dim strData As String = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(data)
            'MessageBox.Show(strData)

            '受信したデータをテキストボックスに書き込む.
            Dim args(0) As Object
            args(0) = data
            Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), args)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub RcvDataToTextBox(data As Byte)

        '受信データをテキストボックスの最後に追記する.
        If IsNothing(data) = False Then
            RcvTextBox.AppendText(data)
        End If

    End Sub