程序中为什么收不到串口发来的数据,而串口调试助手却可以?
从串口发命令,仪器会返回数据,程序接收不到数据,关掉程序,打开串口调试助手后,前面应该收到的数据全部由串口调试助手接收到,这是怎么回事?
用的是MSComm控件,设置如下:
m_ctrlComm2.SetCommPort(2); //选择com2
if( !m_ctrlComm2.GetPortOpen())
m_ctrlComm2.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("Can't open serial port");
m_ctrlComm2.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm2.SetInputMode(1); //1:以二进制方式检取数据
m_ctrlComm2.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm2.SetInputLen(0); //设置当前接收区数据长度为0,设置 InputLen 为 0 时,
//使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
m_ctrlComm2.GetInput();//先预读缓冲区以清除残留数据