使用mscomm控件接收报文时,断断续续的问题,怎么解决呢?
我使用mscomm开发一个串口通信程序,跟下面的单片机通信时,接收到的报文断断续续,
我在mscomm控件的接收事件中,直接显示读取的报文。
比如我收到的一帧应该是有10个字节的,但是并不能一次性把10字节都读上来。
[解决办法]
1.m_ctrlComm.SetRThreshold(10);//设置为10,缓冲区中达到10字节响应一次
2.m_ctrlComm.SetInBufferCount(0);
m_ctrlComm.SetOutBufferCount(0);//发送前清空接收和发送缓冲区
3.m_ctrlComm.SetOutput(COleVariant(arraySend));
//完成1,2后进行发送,如果接收字节数一直为10,即可在初始化时设置,以后可不用重新设置
[解决办法]
DWORD dwErrorMask = 0;COMSTAT cs;//读取之前先获取一下串口的状态,检查是否有返回数据,并得到数据的个数ClearCommError(hPort, &dwErrorMask, &cs);if (cs.cbInQue == 10){ //ReadFile(........);}else{ //重试}
[解决办法]