MSCommで受信した値を16進数で表示するには?

解決


ピロ  2004-05-28 08:13:30  No: 113552

はじめまして。
VB6で,MSCommを使ってデータを受信しています。
送信側は16進数でデータを送信できていますが受信の際,受信した値を16進数でテキストボックス等に表示したいのですが表示できません。

MSComm1.InputMode = comInputModeBinary
Dim Buffer
     Select Case MSComm1.CommEvent
        Case comEvReceive
            Buffer = MSComm1.Input
            Label1.Caption = Buffer

としていますが,例えば送信側が&H61を送信すると,
Label1には,"a"が表示されます。ASCIIコードで表示されています。
これを受信側でも,"61"と表示したいのですが,
どのように改良すればよいのか分からず困っております。

教えて頂ければ幸いです。よろしくお願い致します。


のん  2004-05-28 08:23:30  No: 113553

BufferをByte型の配列で宣言しておけば
Hex$(Buffer(n))    (nは配列の引数)
で16進数表記されます。Hex関数についてMSDNで調べて見てください。
2桁にそろえる必要があるなら変換後の文字数を調べて
1桁であれば頭に”0”を付ける等の処理を付加すればできますね。


ピロ  2004-05-28 09:03:44  No: 113554

>のん様
ご返信誠にありがとうございます。
ご指摘頂きました方法で試してみたのですが,「型が違います」エラーでできませんでした。下記のようにすると,エラーは出ないのですが,値が表示されなくなりました。

Dim Buffer(0) As Byte
    Select Case MSComm1.CommEvent
        Case comEvReceive
            Label4.Caption = Hex$(Buffer(0))
    End Select

です。お手数をおかけして大変申し訳ないのですが,具体的にどのような配列を宣言して,HEX〜の部分を記述したらよいか,教えて頂けませ出しょうか。どうぞよろしくお願い致します。


のん  2004-05-28 09:25:58  No: 113555

Dim Buffer() As Byte
として動的に配列を取得するようにしてみてください。
あとはBuffer=MSComm1.Inputで取得したBufferのサイズ分だけループして
1バイトずつ16進表示するようにすればいいかと思います。


ピロ  2004-05-28 10:00:56  No: 113556

>のん様
お返事誠にありがとうございます。ご指摘の通り試した所,16進数で表示ができるようになりました。本当にありがとうございました。大変助かりました。今後ともよろしくお願い致します。


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




  


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