本人目前使用Delphi的SPCOMM控件对串口进行读写。
有两点体会或问题。
1-在运用过程中,发现该控件没有对串口读写的超时进行控制。(或本人愚笨没发现)
故本人是用时间控件对串口的读写超时进行控制。2-在串口操作中,数据会丢包,但也不是经常,故本人用延时进行控制,问题基本解决。不知道我遇到的问题与解决方法是否正确、合理?
想听听在大家伙对串口编程的经验和体会。
如有兴趣可加我QQ76135178进行详谈,或发邮件[email protected]

解决方案 »

  1.   

    1.超时的处理最好自己来控制.
    SPCOMM本身并不提供超时机制;但在通讯过程中,获取数据并触发接收事件是有一个扫描时间的.这个属性是ReadIntervalTimeOut等相关的属性;
    2.丢失数据包:
      不知道你是指的发送或接收都存在的数据包丢失的现象是不是指数据包的某个字节数据丢失了,造成你数据包的丢失?如果是这样的话,你就要检查下软件握手字节对通讯的影响.
    你就要检查下SPCOMM的Inx_XonXoffFlow,Outx_XonXoffFlow这两个属性的设置;
    Inx_XonXoffFlow,Outx_XonXoffFlow为真表示进行软件握手,握手字节分别是:#19;#17;通讯中如果有这两个字节,软件会当成握手而丢失这两个字节的数据的.