MScomm控件串口被占用的异常处理

最近在调试一个MFC的程序,通讯部分使用的是MScomm串口控件,我们的通信过程是首先找到设备的ID和Com口号,然后根据设备的ID做不同的数据发送和接收。这里少了一个判断串口是否被占用的情况,虽然使用
if (!m_CMscomm.get_PortOpen())
{
   m_CMscomm.put_PortOpen(TRUE);
   return 0;
}
判断串口有没有被打开,但是调试发现,不管串口有没有被占用,get_ProtOpen()返回的都是FALSE,如果串口被占用,再put_PortOpen()打开串口,就会抛出异常,然后通讯界面和通讯按钮就会死掉。既然MSComm控件的方法不能实现串口被占用的判断,那么就自己使用try{}...catch{}来处理异常。贴出异常处理部分的代码,如下:
try
{
m_CMscomm.put_PortOpen(TRUE);
return 0;
}
catch (CException* e)
{
m_CMscomm.put_OutBufferCount(0);
CString showInfo;
showInfo.Format("打开串口-COM%d 失败!", portNo);
AfxMessageBox(showInfo);
return -1;
}
前面的基本设置代码就不贴了。这里如果串口被占用,在执行put_PortOpen()时程序会直接捕获CException抛出的代码,进入catch的异常处理了。然后根据返回值,再做下一步处理就可以了。
结语:个人水平有限,描述的比较混乱,希望对有需要的人有点帮助即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值