现在的位置: 首页 > 综合 > 正文

VS2008使用MSCOMM控件捕捉port already open的错误提示

2013年01月30日 ⁄ 综合 ⁄ 共 572字 ⁄ 字号 评论关闭

最近学习使用MSCOMM控件编写一个简单的串口收发程序,基本功能已经基本实现,但是在我选择已经被占用的串口时,系统会自动弹出“port already open”的提示,虽然会有提示,但是总是让人很不爽,想自己捕捉到这个错误进行处理。

找了好多资料,搜遍了GOOGLE都没有找到解决方法,后来只要自己解决了。

我发现MSCOMM控件的方法都调用InvokeHelper()函数进行处理,于是我在网上搜索InvokeHelper()抛出的异常,还真找到了。

这个函数将参数转换为VARIANTARG值,然后对OLE控件调用IDispatch::Invoke方法。如果对IDispatch::Invoke的调用失败,这个函数将抛出一个异常。如果IDispatch::Invoke返回的SCODE(状态码)是DISP_E_EXCEPTION,则这个函数抛出一个COleException对象;否则它抛出一个COleDispatchException对象。"

所以我使用TRY...CATCH...模块捕捉了COleDispatchException错误,终于实现了捕捉这个错误。

代码如下:

1 TRY 
2 {
3       //TODO 要捕捉的语句
4 }
5 CATCH(COleDispatchException, e)
6 {
7       MessageBox("");
8 }
9 END_CATCH

 

 

抱歉!评论已关闭.