找回密码
 加入
搜索
查看: 4861|回复: 7

[AU3基础] 实在没办法了,来论坛求助,关于串口读取字串成碎片的问题(已解决)

  [复制链接]
发表于 2014-3-25 11:07:09 | 显示全部楼层 |阅读模式
本帖最后由 txm888 于 2014-3-26 12:55 编辑

近期在弄串口刷卡设备读取测试,只读不写,该卡不支持写,每刷一次,卡就会向串口输出十六进制字串,如:0044F769DA
5字节,最后一字节DA是验证用的,实际我只需要0044F769这串数据

我也不知道如何设置超时读取,好像设了也没有用
现在的情况是,每刷一次,会分别到
0044
F769
DA

00
44
F769DA
也不定是这样分的,也可能被拆得各是各的(我程序设置的循环读取数据)

愁死我了啊,论坛这方面资料也过于少,借鉴的机会都没有,有哪位大神曾经研究过的,发发经验啊,谢啦
发表于 2014-3-25 23:41:19 | 显示全部楼层
我没能完全明白你的意思,可不可以读取字符串,达到指定位数就处理一次。未达到指定位数有换行的话就连接到一起。循环执行~
 楼主| 发表于 2014-3-26 07:53:45 | 显示全部楼层
回复 2# haijie1223


    杰哥,好久不见!
    因为是刷卡,现在又是零零碎碎的收内容,我都不知道刷一次,卡里的内容是不是全输到缓存,如果不是,在后台循环接收,就算连接到一起,也会把上一次的内容和下一次的内容误连接到一起,这样数据就是乱的,
比如一个完整的串为:1234567890
上次刷卡得到1234,结果卡没有将所有数据输过来,下次刷卡,会不会1234+123456?
发表于 2014-3-26 08:16:29 | 显示全部楼层
回复 3# txm888


    可以先判断,有没有重复的字符串,如果有则记录长的。
或者直接判断每次接受的字符串长度,如果没有全部传过来,就什么都不记录,直到所有数据都传过来的那一次才记录。这样的话就可能存在刷好几次才能记录到的情况。
 楼主| 发表于 2014-3-26 09:46:33 | 显示全部楼层
回复 4# haijie1223


    嗯,好的,谢谢,我研究看看
 楼主| 发表于 2014-3-26 12:55:12 | 显示全部楼层
回复 4# haijie1223


    循环读取,判断长度累加。长度不够的超时过后丢弃,重新刷就好了,谢谢老
发表于 2014-3-26 13:04:53 | 显示全部楼层
回复 6# txm888


    能解决问题就最好了~
发表于 2015-1-20 16:20:53 | 显示全部楼层
本帖最后由 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个数值
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 03:14 , Processed in 0.239740 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表