您的位置:程序门 -> vb -> 基础类



从串口的激光扫描平台获得的数据乱码,有做过的进来帮忙。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


从串口的激光扫描平台获得的数据乱码,有做过的进来帮忙。[已结贴,结贴人:equn]
发表于:2007-05-25 23:03:12 楼主
串口的激光平台,hs1250
通过mscomm1.input获得的数据乱码,不知道怎么回事

setting为“9600,n,8,1”

帮忙哦
发表于:2007-05-26 06:47:201楼 得分:80
如果你的设置没错的话,可以尝试利用strconv解决问题
发表于:2007-05-26 07:53:262楼 得分:20
检查mscomm控件属性inputmode是否设置为cominputmodebinary,采用二进制输入。
将接收的byte数据流逐字节转为16进制数据分析。
发表于:2007-05-26 12:27:023楼 得分:0
不知道是否设备有问题。代码:
private   sub   mscomm1_oncomm()
dim   dt()   as   byte
dt   =   mscomm1.input()
for   i   =   0   to   ubound(dt)
                debug.print   "十进制: "   &   dt(i)   &   vbtab   &   "十六进制: "   &   hex(dt(i))   &   vbtab   &   "asc: "   &   chr(dt(i))
next
end   sub


扫描条码:6920459912096,输出:

十进制:57             十六进制:39         asc:9
十进制:177           十六进制:b1         asc:  
十进制:178           十六进制:b2         asc:  
十进制:48             十六进制:30         asc:0
十进制:57             十六进制:39         asc:9
十进制:54             十六进制:36         asc:6
十进制:141           十六进制:8d         asc:  
十进制:198           十六进制:c6         asc:  
十进制:54             十六进制:36         asc:6
十进制:57             十六进制:39         asc:9
十进制:178           十六进制:b2         asc:  
十进制:48             十六进制:30         asc:0
十进制:180           十六进制:b4         asc:  
十进制:53             十六进制:35         asc:5
十进制:57             十六进制:39         asc:9


扫描条码:6910019405007,输出:

十进制:180           十六进制:b4         asc:  
十进制:48             十六进制:30         asc:0
十进制:53             十六进制:35         asc:5
十进制:48             十六进制:30         asc:0
十进制:48             十六进制:30         asc:0
十进制:183           十六进制:b7         asc:  
十进制:141           十六进制:8d         asc:  
十进制:198           十六进制:c6         asc:  
十进制:54             十六进制:36         asc:6
十进制:57             十六进制:39         asc:9
十进制:177           十六进制:b1         asc:  
十进制:48             十六进制:30         asc:0
十进制:48             十六进制:30         asc:0
十进制:177           十六进制:b1         asc:  
十进制:57             十六进制:39         asc:9
发表于:2007-05-26 12:42:204楼 得分:0
出现乱码确定是setting错误,正确的为:9600,e,7,1
现在的问题是,读出来的条码分成两次读入,扫描一次获得的数据包含了上一次扫描的后6位数字。本次扫描只得到条码的前7位,并且最前面还有一个字符“f”,如:
“405007(crlf)f6910019”
发表于:2007-05-26 12:47:375楼 得分:0
//现在的问题是,读出来的条码分成两次读入,扫描一次获得的数据包含了上一次扫描的后6位数字。本次扫描只得到条码的前7位,并且最前面还有一个字符“f”

分两次是你程序的要求,还是系统的问题
发表于:2007-05-26 12:52:256楼 得分:0
系统的问题,要一次性读入。
是程序代码有问题,使超级终端测试不会分成两段,不过前面的字符“f”也有。
发表于:2007-05-26 12:55:357楼 得分:0
如果仅仅多出来一个字符f的话,你replace掉即可
发表于:2007-05-26 13:53:148楼 得分:0
不同类型的条码多出来的字符不一样的


快速检索

最新资讯
热门点击