救命呀100分.串口接收的问题,谁来帮帮我呀.100分
服务器用串口以十六进制发了一串数据到客户机
EF EF 22 00 7B 32 30 30 36 2F 31 32 2F 32 35 20 30 39 3A 33 30 3A 33 34 7D 7B C1 F8 D6 DD D5 BE 7D 7B 71 71 71 7D 9F 6F FE FE
翻译结果:
{2006/12/25 09:30:34}{柳州站}{qqq}
如果用ctrmscomm.InputMode =comInputModeText
前面的时间常常马乱码.
如果用ctrMSComm.InputMode = comInputModeBinary
不知道怎么把十六进制换成中文.
谁能帮我写个接收的程序.
[解决办法]
如果知道某个汉字的区位码,只要将区号和位号分别加上160,然后分别转换为二进制数,区码在前、位码在后,就可以得到该汉字的十六位的机内码(国标码)。如“啊”字的区位码是1601,16+160=176--> B0H,01+160=161--> A1H,“啊”字的国标码为B0A1(16进制数)。”
也可以用debug等工具,把汉字转换成十六进制数
[解决办法]
ctrMSComm.InputMode = comInputModeBinary
用这个接收
[解决办法]
用
ctrMSComm.InputMode = comInputModeBinary
接收
然后:
chr()函数把十六进制转换成字符
[解决办法]
Public Function AscToStr(ByVal str As String) As String
Dim strTemp() As String
Dim t1 As String
strTemp = Split(str, " ")
For i = LBound(strTemp) To UBound(strTemp) - 1
t1 = t1 & Chr( "&H " & strTemp(i))
Next
AscToStr = t1
End Function