はじめまして。
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"と表示したいのですが,
どのように改良すればよいのか分からず困っております。
教えて頂ければ幸いです。よろしくお願い致します。
BufferをByte型の配列で宣言しておけば
Hex$(Buffer(n)) (nは配列の引数)
で16進数表記されます。Hex関数についてMSDNで調べて見てください。
2桁にそろえる必要があるなら変換後の文字数を調べて
1桁であれば頭に”0”を付ける等の処理を付加すればできますね。
>のん様
ご返信誠にありがとうございます。
ご指摘頂きました方法で試してみたのですが,「型が違います」エラーでできませんでした。下記のようにすると,エラーは出ないのですが,値が表示されなくなりました。
Dim Buffer(0) As Byte
Select Case MSComm1.CommEvent
Case comEvReceive
Label4.Caption = Hex$(Buffer(0))
End Select
です。お手数をおかけして大変申し訳ないのですが,具体的にどのような配列を宣言して,HEX〜の部分を記述したらよいか,教えて頂けませ出しょうか。どうぞよろしくお願い致します。
Dim Buffer() As Byte
として動的に配列を取得するようにしてみてください。
あとはBuffer=MSComm1.Inputで取得したBufferのサイズ分だけループして
1バイトずつ16進表示するようにすればいいかと思います。
>のん様
お返事誠にありがとうございます。ご指摘の通り試した所,16進数で表示ができるようになりました。本当にありがとうございました。大変助かりました。今後ともよろしくお願い致します。