我以前有一个VB程序,操作串口是这样做的,先发送数据到下位机,然后不断查询机器回应,我现在想做成多线程的,需怎么做(只通过一个串口).我想这样做,不知行不行,先发送马上返回,然后有回应就处理.
一个主要问题是,如果下位机先没响应,然后突然想应,而前面还没发完.
他有没有冲突检测机制.

解决方案 »

  1.   

    现在只有先发送,然后等待下位机的数据,完成后再对下一个下位机发数据。
    所说的多线程是不是只不阻塞在哪个地方,发完就由读线程去读,如果完毕或超时则post消息给主线程。只有对多个串口时才会体现出优势。另外收发可不可以同时进行,或怎么检测下位机是否可以进行双工。
      

  2.   

    看来,为了保险,还是下位机一个个的发,然后等待返回。
    你看这样做好吗。监控界面对象(CWnd子类6个)------>下位机对象(CWnd子类1个)------->串口对象(无父类1个)
     每秒钟发一个消息给下位机对象  一个结构队列(消息,下位机编号,串口号)  可发送字符串
     启动超时时钟                  发送完,启动时钟,并接收数据。         收到字符位即
                                   接收完发消息到界面对象,否则发超时     发消息给下
                                   同时封装指信今,不同机器换掉这         位机对象请问一下还有哪些问题还没考虑到。
    qinghero(水阔长江) thanks.
    你以前一个接线程,一个发线程,会不会出现线程调度出现的数据不完整呢。 下位机是否只接收到完整的数据才回映,发果是这样一个错误数据会不会使他长期处于等待呢。
      

  3.   

    谢谢qinghero(水阔长江),请接分哟。