注册 登录
编程论坛 PowerBuilder

PB使用MsComm32.ocx控件输出16进制数

yo_yo2005 发布于 2011-12-25 13:31, 2859 次点击
String ls_parm , ls_16jz
Int li_10jz

ls_parm = "0A1A2A3A4A5A6A7A8A9A"//16进制字符串  每两位是一个16进制字符
For i = 1 To Len(ls_parm) step 2
    ls_16jz = Mid(ls_parm,i,2)
    li_10jz = gf_hextodec(ls_16jz) //先把16进制转换成10进制
    ls_output = ls_output + Char(li_10jz)
Next
ole_1.object.output = ls_output

gf_writelog(ls_output)//记录日志  用Minihex软件查看输出的16进制是多少

我记录了日志 通过串口传出16进制变成
0x0A 0x1A 0x2A 0x3A 0x4A 0x5A 0x6A 0x7A 0x3F 0x3F

前面的都是好好的
最后两个 不知道为什么就变成转换成0x3F了



String ls_parm , ls_16jz
Int li_10jz

ls_parm = "7376787980"//16进制字符串  每两位是一个16进制字符
For i = 1 To Len(ls_parm) step 2
    ls_16jz = Mid(ls_parm,i,2)
    li_10jz = gf_hextodec(ls_16jz) //先把16进制转换成10进制
    ls_output = ls_output + Char(li_10jz)
Next
ole_1.object.output = ls_output

gf_writelog(ls_output)//记录日志  用Minihex软件查看输出的16进制是多少


我记录了日志 通过串口传出16进制变成
0x73 0x76 0x78 0x79 0x3F

通过我检测发现 16进制的字符 79 以前输出的都可以用
等到 16进制 80 输出又变成 0x3F


总结:
一个16进制字符
如果是一个字母  一个数字  组合的  肯定不行
如果是两个数字的组合 只要前面那个数字超过8  又不行了



高手请教这是怎么回事


串口输出16进制数据到底该怎么处理




0 回复
1