VB初心者です。
以下のような命令を作成したんですが。。。
Dim za(0) As Byte
Dim zb(0) As String
za(0) = a(0) Xor b(0) Xor c(0) Xor d(0) Xor _
dt.R(0) Xor dt.D(0) Xor dt.D(0) Xor _
a1(0) Xor a2(0) Xor a3(0) Xor a4(0) Xor a5(0) _
Xor b1(0) Xor b2(0) Xor b3(0) Xor b4(0) Xor b5(0)
zb(0) = Hex(za(0))
Dim ch1(0), ch2(0), ch3(0) As String
ch1(0) = zb(0).Chars(0) : ch1(0) = Asc(ch1(0))
ch2(0) = zb(0).Chars(1) : ch2(0) = Asc(ch2(0))
ch1(0) = Hex(ch1(0))
ch2(0) = Hex(ch2(0))
Dim ch10(0), ch11(0) As Byte
ch10(0) = ch1(0)
ch11(0) = ch2(0)
このCH10とCh11の結果をMSCOMMで送信したのですが
通信先からエラーが返ってきます。。。
ここでいうch10,11は16進数になっているとは思うのですが。。。
長々と書きまして申し訳ないんですが、助言お願いします
送信するときののch10(0)、ch11(0)の中身を確認してみてください。
書き忘れました。。。
CH10(0)とch11(0)の中身をテキストBOXに出力しています。
そのデータは16進数です・・・
ちょっと不親切すぎますね。
送信したいデータはbyteですよね?
こういった場合は16進も10進も関係ないです。
あくまでも表記が違うだけなので。
Hex関数は16進数にした場合の文字列を返します。
16進を返してるわけではないです。
0xFF=255
ですが
0xFF=Hex(255)
にはなりません。
文字列のFFと255は一緒じゃないですよ。
FFを送りたい場合は&HFFを送るか255を送るが正解です。
dim buf(0) as byte
buf(0)=&HFF
もしくは
buf(0)=255
で
Mscomm1.output=buf
になります。
ch10(0)=Cbyte("&H" & ch1(0))
で送信ですね。
通りすがりさん。どうも助言ありがとうございましたm(_ _)m
一応今確認していたら自己解決しました。
テキストBOXに出していたんですが、16進数と思っていたのが10進数で
勘違いをしていました。。。
ということで正常に送信できました〜><
ツイート | ![]() |