• ベストアンサー

バイトデータの取扱いについて( .Net)

通信対象機器の仕様として1バイト単位でのデータのやりとりを行う下記の様なソースを書いたのですが、どうやっても2バイトで出力されてしまいます。 オシロでモニタしてみると0083が出力されているみたいです。ここで質問なのですがstrCmdで指定した文字列(1バイト)のみを出力させるためのコードを教えて下さい。 Dim strCmd as String strCmd="83" AxMSComm1.Output = Encoding.Unicode.GetBytes(ChrW(Val("&H" & strCmd)))

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

バイトで扱うなら、バイト配列に Dim strCmd As String Dim byt() As Byte strCmd = "83" byt = System.Text.Encoding.Unicode.GetBytes(ChrW(Val("&H" & str))) 'バイト配列の要素数確認 MessageBox.Show(byt.Length) '配列の内容確認 Dim msg As String = Nothing Dim i As Integer For i = 0 To byt.Length - 1 Step 1   msg += Hex(byt(i)) + vbCrLf Next MessageBox.Show(msg)

tamajun
質問者

補足

ありがとうございます。 追加質問があります。実際に83のみ出力させるにはどのように書けばよろしいでしょうか?教えて下さい。 AxMsComm1.Output = ? また、なぜ要素数が2つになってしまうかも教えて頂けるとありがたいです。私は余りバイトデータ・バイト配列等を扱った事が無くどういうものなのか理解出来ておりません。 その辺もご教授頂けるとうれしいです。 なぜ、動的配列byt()が byt = System.・・・(ChrW(Val("&H" & strCmd))) と言う様なインデックスを指定しない形になるのか等が 分っておりません。よろしくお願いいたします。