Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信の受信データを表示
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30252#CommentId82870
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
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 型の変数」に変更してみてください。