为什么用MSComm控件接收串口助手发的一段很短的数据都会被引发好几次串口事件,不能在一次串口时间中读取完整的一帧数据?
我用串口助手发一帧16进制数据(11个字节),但是MSComm控件的OnCommMscomm时间总是分好多次才接收完这帧数据。我已经设置了串口的输入缓冲区大小和引发一次事件的字符数,没起作用,为啥?
我的代码如下:
put_InputMode(1);
put_RThreshold(1024);
put_OutBufferSize(512);//
put_InputLen(0);
put_InBufferSize(1024);
str.Format(_T("%d,%C,%d,%d"),m_nbaudrate,m_cParity,m_databits,m_stopbits);
put_Settings(str);
BOOL bol = get_PortOpen();
if(!bol)
{
put_PortOpen(TRUE);
}
[解决办法]
你是不是用的USB转串口线,如果是,有可能是USB转串口的驱动有问题.如果你能找到带串口的计算机,就在有串口的计算机试.另外,你在接收函数里,你读取时先判断缓冲区里有多少个数据,如果达到需要接收数据的数量再读取数据