MScomm控件串口被占用的异常处理
来源:互联网 发布:数控铣编程软件 编辑:程序博客网 时间:2024/05/24 04:24
最近在调试一个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的异常处理了。然后根据返回值,再做下一步处理就可以了。
结语:个人水平有限,描述的比较混乱,希望对有需要的人有点帮助即可。
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的异常处理了。然后根据返回值,再做下一步处理就可以了。
结语:个人水平有限,描述的比较混乱,希望对有需要的人有点帮助即可。
0 0
- MScomm控件串口被占用的异常处理
- [MSComm]串口通信有关的MSComm控件
- VS2008下用MFC 的MSComm控件编写串口程序
- VS2008下用MFC 的MSComm控件编写串口程序
- VS2008下用MFC 的MSComm控件编写串口程序
- 基于Mscomm控件的串口通信编程
- MSCOMM 串口控件的基本使用
- 基于Mscomm控件的串口通信编程
- Vs2010中MSCOMM串口控件的使用
- 基于MSComm控件的串口通信设计
- MFC串口控件MSComm的使用
- mscomm串口控件初始化
- 串口控件MSCOMM的注册方法(使用MSCOMM串口控件程序的发布问题)
- MSComm控件串口编程流程
- 串口通讯mscomm控件下载
- MFC串口通信控件mscomm
- 基于MSComm控件的串口调试程序(Z)
- 关于VC串口通信不能添加MSCOMM控件的解决办法
- abap --- memory id
- js改变table中td的值
- 解决html5<canvas>标签像素变大,图片变模糊的情况
- PAT 1002
- Logical Databases Logical data
- MScomm控件串口被占用的异常处理
- 安卓开发中Theme.AppCompat.Light的解决方法
- iOS外传——第三方分享
- 常用git命令
- JavaScript eval() 函数详解
- jsp的九大内置对象和四大作用域以及request和session的区别
- Linux下批量解压多个zip文件的方法
- 【01背包-Kth优解】HDU2639-Bone Collector II
- Spring面试要点