最近在调试一个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的异常处理了。然后根据返回值,再做下一步处理就可以了。
结语:个人水平有限,描述的比较混乱,希望对有需要的人有点帮助即可。

MScomm控件串口被占用的异常处理相关推荐

  1. VC基于MSCOMM控件串口通讯

    在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem). 还可以发送命 ...

  2. 在 Wi ndows,MSComm控件在中文Wi的ndows下的通信问题与处理方法.doc

    MSComm控件在中文Wi的ndows下的通信问题与处理方法 MSComm控件在中文Windows下的通信问题与处理方法 摘 要VB 5.0/6.0的MSComm通信控件提供了一系列标准通信命令的接口 ...

  3. 串口MSComm控件五种不同校验方式对数据收发的影响

    (2008-09-10 14:50:00)   http://blog.sina.com.cn/s/blog_470eccc60100arq7.html   串口MSComm控件有五种校验方式,分别是 ...

  4. VS2008下用MFC 的MSComm控件编写串口程序

    可以在:http://download.csdn.net/detail/plutus_lee/4525446 下载详细文档. 首先感谢网络资源吧,作为一个自动化专业出身的,不懂串口实在让我有点无奈,本 ...

  5. vc2010串口通信(使用mscomm控件)

    1.下载mscomm控件: (下载地址:http://download.csdn.net/detail/tianhen791/4023983) 2.安装注册控件:下载完成后解压->点击setup ...

  6. 利用MSCOMM控件通过串口MODEN实现来电显示-c# source code

    利用MSCOMM控件通过串口MODEN实现来电显示-c# source code 注:此代码都已调试通过 处理方式 MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设 ...

  7. 串口通讯mscomm控件下载

    串口通讯mscomm控件下载 大家知道,当我们安装VC++6.0/VB6.0时,如果选择了ACtiveX控件项(自定义安装),MSComm控件就会自动安装在计算机上了,并在系统文件夹下多了3个文件:M ...

  8. Windows串口通信有关的MSComm控件

    问题描述:一般单片机.ARM.FPGA一类的板子基本都会带有RS232串口,因为协议简单,而且成熟,有许多现成的东西可以借鉴使用.在上位机通过串口获取下位机传来的信息或数据,Windows下一般有(1 ...

  9. vs2010串口开发(mscomm控件)_未在此计算机上注册ActiveX控件

    1.简介 在vs2010做串口开发时,当使用mscomm控件时,如果没有注册MSCOMM32.OCX,在运行工程时会弹出"未在此计算机上注册ActiveX控件"这个警告,解决方法如 ...

最新文章

  1. 凭借128核芯片,安培寻求提供可靠的进步
  2. js基础知识温习:Javascript中如何模拟私有方法
  3. Ibatis学习随笔
  4. Spring@Autowired注解与自动装配
  5. PHP下ajax跨域的解决方案之CORS
  6. python处理html的table标签
  7. 重写 隐藏 java_Java中方法的重写与成员变量的隐藏
  8. PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)
  9. 你尽管“口嗨”,不打脸算我输
  10. delphi打印html文件路径,Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法...
  11. Python开发【第二篇】:Python基本数据类型
  12. php读入输入_php-读取用户输入并检查数据类型
  13. golang orm对比
  14. POJ 3360 H-Cow Contest
  15. 目录 1.1. JVM内存模型总体架构图 1 1.2. JAVA堆 2 1.3. 方法区 元空间(Metaspace) 2 1.4. 虚拟机栈 3 1.5. 本地方法区 4 2. 垃圾回收算法 4 2
  16. the owning Session was closed
  17. STM32F103c8t6超频
  18. From Fidelity to Perceptual Quality: A Semi-Supervised Approach for Low-Light Image Enhancement
  19. JS 异步编程的解决方案,以及回调地狱的解决方案
  20. 中国象棋游戏Chess(3) - 实现走棋规则

热门文章

  1. 二级人力资源管理师论文写作心得
  2. Elasticsearch的离线安装部署
  3. Vite给不同环境处理不同的打包命令
  4. 想转行到IT,心里不定,不知道怎么做?
  5. 2020年全国I卷理科数学选择题第3题解析
  6. 华为储存空间管理器可以删除吗_AppStore 评分5.0的可以一键批量删除通讯录和恢复数据的软件...
  7. 动态计算Label的宽高+文字设置
  8. 普元nui:Forms
  9. 打开Maya场景文件自动360度拍平。
  10. 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查...