串口读数据的问题
笔记本:在win 8上,USB口转COM口
通过MS提供的CMSCOMM 控件读取硬件设备返回的数据。
现在的问题是:在读取vResponse=m_MSComm1.get_Input();
这里就会异常,奔溃。
但在其他的机器上没这样的问题,可能是只在个别的机器上有这个,问题,
然后,我增加了try catch(_com_error e) 来捕获异常,但根本无法捕获异常。
=======================以下是初始化=================================================
m_MSComm1.put_CommPort(g_nComNum);//指定串口号
m_MSComm1.put_InBufferSize(BUFSIZE);//指定接收缓冲区大小
m_MSComm1.put_OutBufferSize(BUFSIZE);//指定发送缓冲区大小
if(!m_MSComm1.get_PortOpen())
{
m_MSComm1.put_PortOpen(true);
}
//m_MSComm1.IgnorNullChar(FALSE);
m_MSComm1.put_InputMode(1);//1:设置二进制模式,0:文本模式
m_MSComm1.put_Settings(_T("115200,N,8,1"));// 通信参数设置
//原则上put_RThreshold参数值>=put_InputLen参数值,一般两者相等即可,设成单次接收的最少字节数。
m_MSComm1.put_RThreshold(1);//当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件
m_MSComm1.put_SThreshold(0);//512//为了在三次连续串口通信中改变CommEvent的状态为1而不总是2
m_MSComm1.put_InputLen(0);//触发OnComm事件后m_MSComm1.get_Input()一次从接收缓冲区中读取字节数,设为0表示一次接收接收缓冲区的所有数据
m_MSComm1.get_Input();//先预读缓冲区以清除残留数据
SetCommMask(m_MSComm1,EV_RXCHAR);