zoukankan      html  css  js  c++  java
  • VS2008使用MSCOMM控件捕捉port already open的错误提示

    最近学习使用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

     

  • 相关阅读:
    Linux
    python中元类
    POJ 1182 食物链
    POJ 1733 Parity game
    top 介绍
    周记 2014.8.31
    windows10配置python
    oracle执行update时卡死问题的解决办法
    An Easy Introduction to CUDA C and C++
    super()
  • 原文地址:https://www.cnblogs.com/cxjchen/p/2715031.html
Copyright © 2011-2022 走看看