我现在串口通讯用的控件是MSComm,但是我在接收单片机的数据的时候总觉得要等的时间太长,不知道它控件具体是怎么操作的。比如说我接收的数据有20个字节,PC需要等待大概300ms的时间才能接收完全,但是单片机发送20个字节数据的时间最多只要100ms,差的200ms不知道为什么就是一定要浪费。如果数据多的话浪费的时间还要更长。各位看看到底是什么问题啊?有什么控件是可以不浪费这么多时间的?麻烦介绍介绍。谢谢!

解决方案 »

  1.   

    提高波特率,可以提高速度,但传输距离会缩短。我用spcomm,大概也20字节左右,如果只是从pc发送,100ms就可以发送完成,并保证对方接收到。如果还要接收,差不多也要250ms.如果pc只运行这个串口程序,时间还可以短些,短的不多。我也在找更有效的方法
      

  2.   

    SPCOMM比较好用的_____________________
    http://lysoft.7u7.net
      

  3.   

    to ly_liuyang(Liu Yang):
    用SPCOMM也缩短不了时间的,都一样。to luxuewei5214(小卢):
    我用的波特率是9600,一般情况下都是9600的。我想会不会是因为用的是高级语言编写的程序,而不是低级语言向C那样。当数据放到串口的时候已经经过了一级一级的过滤,所以时间就浪费了。若直接用windows的语言写会不会快点。大家发表一下意见看看。
      

  4.   

    1. C也是高级语言,且效率和Delphi是不分高下的。
    2. 串口在发送和接收信息的时候没有任何重传机制,如果需要必须自己实现。
    3. 串口发送和接收的速度一方面受波特率影响,另一方面也受Windows的串口底层驱动影响。因为使用串口发送数据时,数据只是马上送到了Windows的串口缓冲区中,至于什么时候发送完,基本上无法估算。估计会受到多方面的影响,比如发送线程的优先级、Windows消息的传送和处理速度、CPU的速度、内存剩余空间等等。接收也是如此。
      

  5.   

    那用windows底层语言直接写会不会加快点速度?
      

  6.   

    SPCOMM就是直接API操作,MSCOMM是ActiveX的当然有点不一样的如果你去了驱动级别,直接端口操作,相信效率和API没多大区别的还有WIN2003,XP会比98,ME有更高的效率说道实时性,PC绝对比不上单片机的!PC上还要运行很多程序,做很多事情,而单片机却只是做一样事情_____________________
    http://lysoft.7u7.net
      

  7.   

    我使用 ComPort也碰到了一个速度的问题,好象是比较慢,不知道怎么提高速度