在DELPHI中调用MSCOMM接收数据确实有问题,前一段时间我一直在搞串口通讯,调用MSCOMM控件接收数据不是缺位就是错位,后来改用CPort263就可以了。

解决方案 »

  1.   

    你在http://www.csdn.net/expert/topic/420/420062.shtm,说过这个问题,贴子还没有结.
    我提一些看法
    任何串口通讯都有可能丢失数据,只不过发生的几率不同,你只能想办法去降低它
    windows下mscomm程序检测串口需要一定的时间间隔,比如说4ms检测一次(你可以测个测试程序自己先测一下),如果握手设的不好容易丢数,你的RThreshold 太少了,触发太频繁容易丢数,关键是要在编程时考虑丢数的情况,握手时可以加上收发的大小,每次发送按照接收大小选择发送内容,触发终止可以加上定时检验去重新触发,不要把心思用在怎么去避免丢数上
      

  2.   

    superyiman(役满) :
         你说得很有道理。我现在采用定时器,如果超过规定时间未收到规定字节数,则给发端发重发信号,让发端重新发送一遍。现在可以在两台机器之间在6分钟之内,传完1M字节的文件。但只是迂回解决了串口通信丢失的问题。
        后来我也试过把RThreshold设为需要接收的字节数,但还是无法避免丢失数据的现象。
        我觉得在串口通信中,加入RTS/CTS握手协议,应该可以避免数据丢失问题。
        不知道在SPCOMM中是否会丢失数据?请多指教!
        
        
        
      

  3.   

    唉牙牙,我正在用Spcomm,不好用啊,我正考虑换MScomm,看你们这么一说,我怎么办啊?