我用CMSComm控件来做串行,
今天早上对原有的程序做了点改动,居然弄的出了这个怪问题,郁闷啊
问题情况:
f(!m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(TRUE);
}
上面代码,打开串口成功返回了,没有问题,但是用串口查看器查看了一下,串口目前状态是关闭的。
接下来是关闭串口的代码:
if(m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(FALSE);
}
执行到m_mscomm.get_PortOpen())这句时候又报错了了 郁闷的。
请教高手,在线等
今天早上对原有的程序做了点改动,居然弄的出了这个怪问题,郁闷啊
问题情况:
f(!m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(TRUE);
}
上面代码,打开串口成功返回了,没有问题,但是用串口查看器查看了一下,串口目前状态是关闭的。
接下来是关闭串口的代码:
if(m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(FALSE);
}
执行到m_mscomm.get_PortOpen())这句时候又报错了了 郁闷的。
请教高手,在线等
try {
m_mscomm.put__CommPort(m_portNum);
m_mscomm.put_InBufferSize(256); //设置输入和输出缓存的大小
m_mscomm.put_OutBufferSize(256);
if(!m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(TRUE);
m_mscommable = TRUE;
}
else
{
m_mscommable = FALSE;
}
//this->KillTimer(1); //这里为什么要销毁定时器
//m_mscommable = true;
} catch(COleDispatchException *e)
{
//m_mscommable = false;
CString port; if(e->m_dwHelpContext == 8005)
{ port.Format(_T("串口COM%d已被占用"), m_portNum);
}
else if(e->m_dwHelpContext == 8002){
port.Format(_T("串口COM%d不存在"), m_portNum);
}
else {
port.Format(_T("串口COM%d打开时操作不合法"), m_portNum);
} MessageBox(port, _T("提示"), MB_OK | MB_ICONWARNING );
return false;
}
至于后面的m_mscomm.get_PortOpen())这个时候则是异常中断了,至于是什么错误,我不知道呢
是否成功,你在put_PortOpen(TRUE)之后,立即调用m_mscomm.get_PortOpen()测试一下。估计也会崩溃吧。
不过没有崩掉,后面的代码还是崩掉了,
怎么回事呢
GetLastError()不太熟悉,
能给点资料,或是网址也可以
另外,你这没有错误信息啊,所以应该是进不了catch语句吧?这语句里面的语法似乎是没有错误的,不过打开串口的代码出错,我也不明白