个人见解:  USB 转 232 一般为了提高USB数据包的载荷率, 会有一个延迟计时器, 以便将一段时间内的数据组成USB数据帧, 可能在这段时间内的数据超过了缓冲区长度,  可以在驱动设置中降低这个设置值, 
或者 SetupComm 加大缓冲区长度

解决方案 »

  1.   

    USB转RS-232会有数据收发的延迟
    将串口超时参数调大些试试
      

  2.   

    解决方法找到了,但是具体原因不是很清楚。后来进行多次测试之后发现,当满足以下条件时,将会出现数据丢失的情况:
    1.连接线使用USB转RS-232
    2.PC端接收数据的同时,发送数据。
    3.发送数据的速度大于接收数据的速度。发送速度越快,数据丢失率越高。发送速度越慢,数据丢失率越低。解决方法是:
    将 WriteChar(CSerialPort* port) 内部的
    PurgeComm(port->m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
    改为:
    PurgeComm(port->m_hComm, PURGE_TXCLEAR | PURGE_TXABORT);
    But,为什么在不修改代码的情况下,直接使用RS-232连接线不会出现数据丢失的情况呢??清空接收缓冲区了,数据接收为什么没有丢失??