投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/7/5 15:37:05
> その後、次のメッセージが表示されます。
Option Strict On を宣言しておけば、実行時エラーではなく、
コンパイル時点で問題点に気が付くことできます。


> 「型'System.Byte[]'のオブジェクトを型'System.String'に変換できません」

③案で上記のエラーが出るのは、バイナリーを文字列として渡そうとしているためです。
要するに、「データ型が間違っているから」ということです。


> Dim data As Byte() = New Byte(SerialPort1.BytesToRead - 1) {}
変数 data は「Byte 型の一次元配列」として宣言されていますよね。
これが 型'System.Byte[]' に相当します。


> Private Sub RcvDataToTextBox(data As String)
最終的に受け取るのは上記のメソッドですが、この引数は「String 型」ですよね。
これが 型'System.String' に相当します。


この違いがあるため、エラーが発生することになります。
バイナリーを文字列型引数に渡そうとするのではなく、
どちらかの型に統一するようにしてみてください。

【A案】バイナリーに統一する場合:
「Private Sub RcvDataToTextBox(data As Byte())」に変更してみてください。

【B案】文字列に統一する場合:
Invoke に渡す引数 arg を、「String 型の変数」に変更してみてください。