通讯组件使用spcomm,在一个函数中发送指令,发送后函数就结束了,这时结果还没有返回,需在消息处理事件中才得到返回结果,如何将发送指令和返回结果整到一个函数中?

解决方案 »

  1.   

    你这个函数也必须等待,在可SPCOMM的数据接收事件中更换函数的变量,此时函数返回数据,或等某个时间后返回错误或其它值。
      

  2.   

    不用事件接收,手工接收吧。一个函数大概如下形式:Write(); //写串口
    Sleep(); //等待
    Read();  //读串口这儿的等待,如果串口设备响应时间比较固定,可以用Sleep()固定延时一个时间,如果是不定长的响应时间,可以检查接收到的数据长度,接收数据长度够了就返回
      

  3.   

      查询输入缓冲区的字节数(InputCount),如果大于0就读取。当然这个通讯过程最封装到一个线程中去比较好。
      

  4.   

    我是在函数中用一个子线程向串口发送和接收,主线程使用waitforsingleobject(thread.handle, 2000),但是主线程一调用waitforsingleobject,子线程也接收不到串口消息了,waitforsingleobject超时后再收到消息,各位是用什么方法等待?
      

  5.   

    主线程使用waitforsingleobject(thread.handle, 2000), thread.handle是谁的handle?
      

  6.   

    主线程使用waitforsingleobject(thread.handle, 2000), thread.handle是谁的handle?

    当然是子线程的handle
      

  7.   

    可能子线程已经收到串口消息,只是主线程在Wait时被阻塞,所以你觉得没收到消息