我现在做一个称重管理的系统,下位机通过串口一直不断地向PC机输出数据。本来我是用SPCOMM但发现他根本接收不到传来的数据或接收的不对,就用API来写了。这样接收到了正确的数据,但是我发现速度要比别人做的程序要慢很多啊。请问在处理数据连续输出时如何使得程序优化。

解决方案 »

  1.   

    数据长度18个Byte,我GetTickCount一下读取一次数据时间为300左右
      

  2.   

    spcomm用线程后台处理比API快的多,你也可以用线程来搞。
      

  3.   

    设置spcomm的读取超时时间。设的小一点就可以了。
      

  4.   

    to:ChinaOk(授人以鱼,不如授人以渔) 
      但别人的程序对重量的改变的反映也很快,绝对小于1秒的。我用Timer控件间隔设为550了这相当时重新连接一次后读取再断开的时间,但实际上我是一直连接上的关闭程序再断开的。
      

  5.   

    你现在设置了550也就是半秒,应该反映很快了。
    也许是你用api的地方有些不妥。可以换成其他的成熟的串口控件。我的是用的mscomm
    其实spcomm也不错的。程序对串口部分的要求不是太高,只要能及时接收数据就可以了吧。
    也不是互动操作的方式。
      

  6.   

    还有一点,接收缓冲区,在每次取数时要取最新的那个数值。然后把缓冲区清空,或者缓冲是可以循环利用的。另外如果你的显示方式比较耗费资源,比如用图片来显示LED样式,
    你可以保存一下上次设置的重量值,如果这次要设置显示的与上次的相同就不在设置它,
    也能节省一些资源。
      

  7.   

    TOLEDO 8142,我就是用的标签,不过通讯是别人用VC写的DLL就用的API,在Delphi里调的。
      

  8.   

    你就写一个简单的程序,调用那个dll,看看取一次数据需要多少时间,有可能是他们的问题。
    dll是不是对称发过来的数据处理了?而处理过程的不太合适?你可以自己用spcomm来访问串口让他们看看速度。
    readtimeout设置为0
      

  9.   

    搂主能不能发一份TOLEDO 8142的说明文档给我??
    想看看TOLEDO 8142的串口数据格式。
    [email protected]
    谢谢!