VB.netでバイナリーデータをtextboxにだすには?


ピエロ  2006-02-04 00:53:13  No: 93962

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


ガッ  2006-02-04 19:15:29  No: 93963

"t"と言う文字を表示させる方法は分かるのですね。
で、01110100(2進数)=116(10進数)を表示させる方法は分からないと…
素直に116を表示させるのではダメなのですか?


ピエロ  2006-02-07 00:43:53  No: 93964

返信ありがとうございます。

>素直に116を表示させるのではダメなのですか?

ということはtextboxにバイナリーで受信したデータをそのまま表示することはできないのでしょうか??現在は、16進数表示はできたのですが2進数表示ができないでいます。

 binaBuffer = AxMSComm1.Input 
 x = binaBuffer 
 TextBox3.Text = TextBox3.Text & BitConverter.ToString(x).ToLower()


我龍院忠太  2006-02-07 02:56:37  No: 93965

バイナリーモードで受信したバイト配列のデーターを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


特攻隊長まるるう  2006-02-07 03:10:32  No: 93966

BitArray クラスを利用してもいいかもね。


ピエロ  2006-02-07 04:44:42  No: 93967

はい。バイナリーモードで受信したバイト配列のデーターを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などなにが送られてきても表示したいのですが。。。

よろしくお願いします。


我龍院忠太  2006-02-07 06:16:13  No: 93968

>この方法で、8ビットがどんな値かわからない通信もできるんでしょうか?
どんな値といっても、8ビットなんで0〜255(FF)までの256通りしかありませんが、
バイナリーモードで送られて来た全てのデーターを表示します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加