投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/7/5 17:35:41
> SerialPort1.Read(data, 0, data.GetLength(0))
この場合は
 SerialPort1.Read(data, 0, data.Length)
の方がスマートかと思います。


私の指摘は
> 【A案】バイナリーに統一する場合:
> 「Private Sub RcvDataToTextBox(data As Byte())」に変更してみてください。
でしたが、修正されたコードが
> Private Sub RcvDataToTextBox(data As Byte)
になっていますね。配列で受けてください。


> RcvTextBox.AppendText(data)
AppendText メソッドに渡すべき引数は String 型です。
この場合の data は String では無いので、Option Strict On ではエラーになるでしょう。

data が Byte 型なのだとしたら、
 RcvTextBox.AppendText(CStr(data))
 RcvTextBox.AppendText(data.ToString())
 RcvTextBox.AppendText(Hex(data))
 RcvTextBox.AppendText(data.ToString("X"))
などを試してみてください。

「data As Byte」を、「data() As Byte」もしくは「data As Byte()」に修正した場合は、
 RcvTextBox.AppendText(BitConverter.ToString(data))
などを試してみてください。



もう一つ。

Invoke メソッドの引数は ParamArray になっていますので、
わざわざ Object 配列に詰めなおす必要は無いと思います。
具体的には
Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), data)
で良いと思いますし、仮に Object 配列に詰めるとしても、変数を用意せずとも
Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), New Object() { data })
のように書けるかと思います。