- ベストアンサー
COMポートからのデータ受信
COMポートからのデータ受信をしてるのですが、 受信データが 『┐┌┌┌┐・・』なかんじのデータなのですが、 これを10進数のバイナリに変える方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<バイナリモードを指定しておく> MSComm1.InputMode = comInputModeBinary <受信> Dim Buffer As Byte '<---1バイト分の領域確保 Buffer = MSComm1.Input Debug.Print Buffer <---0~255の数値が入っているはず^-^?
その他の回答 (1)
- JaritenCat
- ベストアンサー率37% (122/322)
例えば、"┐┌┌┌┐"をシリアルで受信した場合、漢字コードの種類によって送られてくるデータが変わってきますね。コードの部分だけみれば、16進数で書くと、 S-JIS 84 A2 84 A1 84 A1 84 A1 84 A2 EUC A8 A4 A8 A3 A8 A3 A8 A3 A8 A4 JIS 28 24 28 23 28 23 28 23 28 24 UNICODE(UTF-16) 10 25 0C 25 0C 25 0C 25 10 25 です。 まず、送られてくる漢字コードからVBで使う漢字コードに変換が必要だと思います。 それから10進数値に変換すればいいのではないでしょうか。 1バイト2個を1ワードにするのは、上位バイトを256倍して下位バイトを足せばいいので、例えば 132 162と送られてきたら 162*256+132=41604 と計算できます。 多バイトコードの場合、エンディアンが問題になります。ビッグエンディアンで送られてきて、リトルエンディアンで処理するなら上位バイトと下位バイトが逆になりますので上の計算も162 132と送られてきたのを 162*256+132=41604 と計算します。 なんか的外れな回答になってしまったような。
お礼
バイナリモードを指定しておくとできました。 有り難うございました。