VB.netでMSCOMMを使って、RS232Cの通信を行っています。
MSCOMMでバイナリーモードで受信にした場合に、そのままtextboxに表示させる方法がわかりません。
たとえば、送信側が"t"(バイナリーで01110100)を送ったとした場合、テキストモード受信では、TEXTBOXに"t"と表示させ、バイナリーモードの場合は"01110100"と表示させたいです。テキストモードの場合はうまくいくのですが、バイナリーモードにするとまったく何も表示されません。
ASCコードをTEXTBOXが表示しようとしているので何も表示してくれないと思うのですが、どのようにすればバイナリーで受信したデータのままTEXTBOXに表示する方法がわからないでいます。
よろしくお願いします。
If CheckBox1.Checked = True Then
AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary
Else
AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText
End If
If AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary Then
binaBuffer = AxMSComm1.Input
TextBox3.Text = binaBuffer
'↑ここがうまくいきません。
Else
Buffer = AxMSComm1.Input
honnBuffer = honnBuffer & Buffer
If Microsoft.VisualBasic.Right(Buffer, 1) = "t" Then 'データを全て受け取ったらテキストボックスを空白にする。
TextBox1.Text = honnBuffer
' AxMSComm1.Output = honnBuffer
honnBuffer = Nothing
End If
End If
"t"と言う文字を表示させる方法は分かるのですね。
で、01110100(2進数)=116(10進数)を表示させる方法は分からないと…
素直に116を表示させるのではダメなのですか?
返信ありがとうございます。
>素直に116を表示させるのではダメなのですか?
ということはtextboxにバイナリーで受信したデータをそのまま表示することはできないのでしょうか??現在は、16進数表示はできたのですが2進数表示ができないでいます。
binaBuffer = AxMSComm1.Input
x = binaBuffer
TextBox3.Text = TextBox3.Text & BitConverter.ToString(x).ToLower()
バイナリーモードで受信したバイト配列のデーターを2進で表したいのかな。
Dim ByteBuf() As Byte = {116, 117, 118, 119}
For i As Integer = 0 To UBound(ByteBuf)
TextBox3.Text = TextBox3.Text & " " & System.Convert.ToString(ByteBuf(i), 2).PadLeft(8, "0")
Next
BitArray クラスを利用してもいいかもね。
はい。バイナリーモードで受信したバイト配列のデーターを2進で表したいのです。
>Dim ByteBuf() As Byte = {116, 117, 118, 119}
>For i As Integer = 0 To UBound(ByteBuf)
> TextBox3.Text = TextBox3.Text & " " & System.Convert.ToString(ByteBuf(i), 2).PadLeft(8, "0")
>Next
この方法で、8ビットがどんな値かわからない通信もできるんでしょうか?
00001111 01010110などなにが送られてきても表示したいのですが。。。
よろしくお願いします。
>この方法で、8ビットがどんな値かわからない通信もできるんでしょうか?
どんな値といっても、8ビットなんで0〜255(FF)までの256通りしかありませんが、
バイナリーモードで送られて来た全てのデーターを表示します。
ツイート | ![]() |