用MSComm控件做通讯,丢失数据问题 ( 积分: 200 )

  • 主题发起人 主题发起人 ykxiong1
  • 开始时间 开始时间
Y

ykxiong1

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI用MSComm控件做IC卡食堂机数据采集,遇到值为11,13的数据就接受传输不上来,比如说本来要返回12个字节,如果有两个字节为$11或$13,就只能返回10个字节了,同时用VB做的测试程序发相同的命令,就能全部采集上来,有没有那位大侠遇到过这种问题,本人不胜感激,在线等待...
 
11 13估计是被过滤了
看看有没有二进制模式
 
to Mike1234567890
是不是InputMode,我MSComm1.InputMode := 1;
不知道还有其它地方要特别注意的?
 
这个问题我见过解决方法。。。是控件源码有问题。。。该该就可以了。。Delphi K.Top讨论区 有。。现在不知道有没有了。。。
 
控件自己丢掉了。。。11,13
 
to tangrongbin
但是我做硬件的同事用VB做没问题,我就用他机器上的控件,也是出错,感觉无限郁闷
 
换个控件试一下,也许是控件有问题,
 
等待......................................................................................................................................................................
 
到网上查了别的资料,都是说SPCOMM会出现这种情况,换mscomm就好了,我晕
 
我也遇到过,SPCOMM会出现这种情况,换mscomm就好了
 
哎,我用的就是mscomm,不知道换啥了.....................................
 
用API串口通讯函数
 
晕 就不是SPCOMM 的问题是你设置的问题 哪个是 数据分离指示你没有设置好,13 10 是文字中的换行 所以在写SPCOMM 的时候设置的自动的 数据分离 自己看下SPCOMM 原始代码应该可以分析出来.不要老怀疑别人的问题 439661788 :q
 
帮你顶一下,接个分
 
$13是回车键吧,$10是换行。 可能你用的是string来接收,如果用byte数组就可以取出来了。同样还有一个问题就是如果是$0,那么string的结束符就是$0,意味着$0后面的数据将读取不出来。
 
to enterwin
我是用byte数组接收的,我的问题是都没有接收到,遇到返回有$11和$13的,应该是12个字节的,就只能返回10个了,就是接收长度必须减少才能触发接收事件
 
有很多原因,如:线路太长、信号不稳定等等。
 
to bbscom
这些问题应该都可以排除,因为同一台机器用VB做的就可以,用DELPHI做的就出现上面的问题,并且只是有规律的少这两个,如果返回没有这两个的就会正常
 
[:D] 白说了
 
后退
顶部