115200速率  这个是对于硬件来说的.串口驱动通过串口硬件把90Bytes的数据发送出去, 确实需要一定时间.但是WriteFile写仅是写到缓冲区中, 如果缓冲区没有满, 就写入缓冲区就返回了, 并不会等待数据真正从串口发送出去.所以就有这样的现象了.

解决方案 »

  1.   

    那有什么办法,能够知道,写入到缓冲的90Byte,已经真实的从硬件接口上完全发送出去了呢?
      

  2.   

     一般不需要判断,99.999999999999999999999999999999%发送会成功
    可能是我没有说清楚,我担心的不是串口的驱动,不能把Buff中的数据发出;而是,希望知道,驱动在何时把Buff中的数据已经全部发出。
      

  3.   

    换句话说,例如,我有1000Byte的数据要发出,但是,由于下面链接的下位机的关系,这1000Byte的数据不能一次性的发送出去,需要分割成100个Byte 长度的10个小段从串口发送给下位机,每个小段之间,要求,要有5 MS的间隔。现在,上位机(PC)端的软件,先发送了100个Byte,这里的WriteFile立即返回了(数据还在Buff中),所以,我希望知道写入到Buff中的100Byte什么时候从硬件接口上发完了,然后,我Sleep 5 MS,我好接着发送剩下的一些100Byte的数据。希望能够,在最短的时间内发送完1000Byte
      

  4.   

    OnCommNotify 中:case EV_TXEMPTY:
    /*向主线程发送数据已发送消息*/
    printf("Event:数据已发送\n");
    break;