现在有这么个要求,有四个串行口,用户要求同时进行工作。我用的是VB6.0,本来用一个串口进行工作就已经比较勉强了(因为要采集很多数据,而且是循环采集),现在又要说用4个串口一起通信。以前我是用定时器来进行操作的,定时100ms发送一次数据处理一次数据,这样循环过去(CPU占用平均在40%左右)。现在四个串口难道用四个定时器来进行操作吗??那么这样数据处理会不会太多了,系统好象很吃不消啊~~~各位大虾说说看,有什么好的办法来实现吗?实在没有多少分了,跪下了~~!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    哦,对了,我用的是MSCOMM控件进行串口通信的
      

  2.   

    做过操作16个com口的,通过扩展卡。但那是仪器给电脑读信号后才采集数据。循环采集电脑肯定吃不消,建议用c或delphi写个多线程com组件调用。
      

  3.   

    四个串口不多,用timer就可以,别用循环采集
      

  4.   

    用Timer倒是知道怎么弄,就是用C或DELPHI写个多线程COM组件调用不太清楚/可以通过VB中的ACTIVE X控件来重新封装MSCOMM控件,然后再用定时器来调用,这样好象是多进程互不干扰的,Active X控件是这样工作的吗?
      

  5.   

    不一定要用多线程的,mscomm的发送和接收本身应该是异步的,也就是说,你调用mscomm.output ="aaa"这句执行完以后,实际上数据还可能没有发出去呢。
    另外不知道为什么要用四个定时器呢,一个定时器就可以了啊。
    在一个定时器中,直接象下面这样调用。
    mscomm1.output="aaaa"
    mscomm2.output="bbbb"
    mscomm3.output="cccc"
    mscomm4.output="dddd"如果你的要求实在比较高,就不要用vb写了,还是用vc直接调api。
      

  6.   

    我也是这样的,我就是用了4个定时器了,一个好像不是很好的,读com好像太慢了,如果还有别的处理更不行的,还是分开好些
      

  7.   

    一个定时器中进行4个MSCOMM的发送和前一次数据的处理,这样好象数据处理量会很多(100ms的间隔+数据处理时间)*8(8次发送数据为一组)这样的时间可能会达到3s都不止...