解决方案 »

  1.   

    建议你使用CxSerial
    http://www.cnblogs.com/EdmundDwyane/p/3174308.html
      

  2.   

    有几种方法
    1.上位机发送完数据后,加入sleep(若干毫秒),然后读取下位机发回数据,然后返回;适合于下位机延时不长,数据交换长度不多的场合(工业控制大多是这样的类型),这种模式最好创建一个发送线程;2.上位机发送数据后,使用OnCommMscomm事件中,接收,这种方法有个麻烦,必须有结束标志或者返回的数据长度确定,否则无法判断一个接收结束
    3,使用定时器,可以使用一个数组保存发送数据,每次发送标记一个发送,发送后,如果接收数据完毕,则取消发送标记。定时器每次进入,检查是否有发送标记,如果有,则转入读数据状态,否则,发送数组中下一条数据,这种方法比较有效率,但逻辑有点麻烦
      

  3.   

    每次接收数据引发一次ONCOMM事件,你这样就一直卡在发送上,发送完才进行接收,你可以弄一个全局变量k,,将发送写到if( m_MSComm.get_CommEvent()==2 )  里面 ,k++ 每个K发送一条
      

  4.   

    这样会不会太占资源了?万一串口出现什么问题一直都接收不到,那我什么都做不了了。我觉得可以试一下worldy的方法3
      

  5.   

    这个可以尝试一下,我还是新手,对串口还不是很了解,我先把MSCOMM搞懂再尝试下您的方法吧。