实在没办法了,来论坛求助,关于串口读取字串成碎片的问题(已解决)
本帖最后由 txm888 于 2014-3-26 12:55 编辑近期在弄串口刷卡设备读取测试,只读不写,该卡不支持写,每刷一次,卡就会向串口输出十六进制字串,如:0044F769DA
5字节,最后一字节DA是验证用的,实际我只需要0044F769这串数据
我也不知道如何设置超时读取,好像设了也没有用
现在的情况是,每刷一次,会分别到
0044
F769
DA
或
00
44
F769DA
也不定是这样分的,也可能被拆得各是各的(我程序设置的循环读取数据)
愁死我了啊,论坛这方面资料也过于少,借鉴的机会都没有,有哪位大神曾经研究过的,发发经验啊,谢啦 我没能完全明白你的意思,可不可以读取字符串,达到指定位数就处理一次。未达到指定位数有换行的话就连接到一起。循环执行~ 回复 2# haijie1223
杰哥,好久不见!
因为是刷卡,现在又是零零碎碎的收内容,我都不知道刷一次,卡里的内容是不是全输到缓存,如果不是,在后台循环接收,就算连接到一起,也会把上一次的内容和下一次的内容误连接到一起,这样数据就是乱的,
比如一个完整的串为:1234567890
上次刷卡得到1234,结果卡没有将所有数据输过来,下次刷卡,会不会1234+123456? 回复 3# txm888
可以先判断,有没有重复的字符串,如果有则记录长的。
或者直接判断每次接受的字符串长度,如果没有全部传过来,就什么都不记录,直到所有数据都传过来的那一次才记录。这样的话就可能存在刷好几次才能记录到的情况。 回复 4# haijie1223
嗯,好的,谢谢,我研究看看 回复 4# haijie1223
循环读取,判断长度累加。长度不够的超时过后丢弃,重新刷就好了,谢谢老 回复 6# txm888
{:face (303):}能解决问题就最好了~ 本帖最后由 mgchl 于 2015-1-20 16:23 编辑
$a=FileOpen ("d:\file.txt",0);或者变量
Local $b=FileReadLine ($a,1);这里的数字“1”行数
$c=StringRight ($b,2);从$b从右向左提取2个数值
$c=StringLeft ($b,8);从$b从左往右提取8个数值
页:
[1]