1、前言

之前的博客中有一篇关于MSCOMM使用的文章,里面最然给出了例子,但是对MSCOMM的使用介绍的不够。加之,近来又接触了上位机编程方面的东西,遂详细的做点笔记在这里。

MSCOMM控件应用比较广泛的原因主要还是在于它的操作简便性。特别是不需要做很多的代码编写工作就可以实现一些很基础的功能。但是在实际的开发使用时候还是要了解一些基本的MSCOMM属性,这样在出现问题的时候才不至于找不到原因。

2、MSCOMM的常用属性

这些图片都是从书中截取出来的。该书的pdf版本下载链接附在本文的最下面。

1、  BOOL get_PortOpen()和put_PortOpen(BOOL newValue)属性

BOOL get_PortOpen()  返回当前是否打开串口,TURE为打开,FALSE为关闭;

put_PortOpen(BOOL newValue)  设置串口打开,参数newValue为要打开的串口号。

2、  put_CommPort(short newValue)和short get_CommPort()

put_CommPort()  设置需要打开的串口;

get_CommPort()  获取已经打开的串口号。

Tips:在打开串口之前必须要设置要打开的串口。在关闭串口前也必须保证串被关闭串是处于打开状态的。

3、  put_InBufferSize()和put_OutBufferSize()

put_InBufferSize()  设置输入缓冲区大小(Byte),缺省下为1024字节;

put_OutBufferSize()  设置输出缓冲区大小(Byte),缺省下为1024字节。

4、  put_InputLen()

put_InputLen()  设置当前接收区数据长度为0,表示全部读取。

5、put_InputMode()

put_InputMode()  设置为以二进制或者字符串的方式进行输入。

6、  put_RThreshold()

put_RThreshold()  设置一个阈值,当输如缓冲区的字符数量达到该阈值时,控件就会产生一个onComm事件,并且CommEvent属性设置为ComEvReceive,即为接受事件。

7、  put_Settings()

设置通信的参数,格式为:波特率,奇偶校验类型,数据位,停止位;

例如:

m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600无校验位,8位数据位,1位停止位

更多的属性可以在书(点我下载)上查找到,利用上述的属性可以做基础的串口初始化设置,设置的过程可以如下:

if(m_mscomm.get_PortOpen())            //如果串口是打开的,则关闭串口{m_mscomm.put_PortOpen(FALSE);}m_mscomm.put_CommPort(4);              //选择COM1m_mscomm.put_InBufferSize(1024);       //接收缓冲区m_mscomm.put_OutBufferSize(1024);      //发送缓冲区m_mscomm.put_InputLen(0);              //设置当前接收区数据长度为0,表示全部读取m_mscomm.put_InputMode(1);         //以二进制方式读写数据m_mscomm.put_RThreshold(16);           //接收缓冲区有1个以及1个以上字符时,将引发接收数据的OnComm事件m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600无校验位,8位数据位,1位停止位if(!m_mscomm.get_PortOpen())           //如果串口没有打开则打开{m_mscomm.put_PortOpen(TRUE);//打开串口AfxMessageBox(_T("串口1打开成功"));}else{m_mscomm.put_OutBufferCount(0);AfxMessageBox(_T("串口1打开失败"));}

3、MFC中插入MSCOMM控件

在资源管理视图的对话框资源下,右键>插入ACTIVEX控件,找到:

选择确定,并为该控件添加关联变量,添加响应的类。这样就可以对其进行操作了,串口的初始化设置如上面代码设置即可。

4、数据类型的处理

输入输出缓冲区的类型都是VARIANT类型,程序中常用的字符处理类型是CString,char*等类型。所以需要将数据类型进行转换。

在需要发送数据时:

5、注意事项

文档下载

MSCOMM串口控件在VS2010中的使用相关推荐

  1. 串口数据visual c++ MSComm 串口控件程序开发

    时间紧张,先记一笔,后续优化与完善. 在计算机中,数据通信主要有两种:一种是串口通信,每一个字符的二进制位按位排列停止传输,速度慢,但传输距离较远.鼠标口和usb口都属于串口.另一种是并行通信,每一个 ...

  2. VS2015中配置MSComm通讯控件和注意事项

    1.MSCommon通讯控件前文回顾 MSComm 作为一个串行通讯控件.在为程序员串口通讯编程节省了很多时间,基于对话框的应用中加入一个MSComm控件非常简单. MSComm控件提供了两种处理通信 ...

  3. vc++6.0使用串口控件例程

    vc++6.0使用串口控件例程 1.建立项目: 打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest; 2.在项目中插入MSComm控件 选择Project菜单下Add To Pr ...

  4. 常见的串口控件(1)

    串口控件主要有三种: mscomm: 微软的东西,是VB中带的一个ActiveX控件,使用简单,性能一般,由于是ActivX控件,打包时需要注册好多信息,在Delphi中使用,建议使用VCL控件,编译 ...

  5. node-red教程6 串口控件的使用

    #6.1 串口控件安装与介绍 串口控件是一个很有用的控件,它可以通过电脑或树莓派的串口收发数据.由于我们要做一个基于node-red的应用,并不是做一个只运行与电脑的纯软件,所以必然要与一定的硬件产生 ...

  6. 确定多重选择列表控件 (List Control) 中的选定内容

    确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...

  7. android 获取控件在屏幕中的坐标

    今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...

  8. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

  9. MapX 控件在C# 中的应用 (一)

    MapX 控件在C# 中的应用 (一) 关键字:MapX,C#,Net,ActiveX控件   /* * 在这段代码中,我们应用MapX控件结合老美地图做了最基本的 * 地图浏览功能:放大.缩小.拖动 ...

最新文章

  1. 多迪新手学UI设计,拿高薪必须掌握的几个小技巧?
  2. Protobuf windows
  3. 中国联通被指乱扣费 返还金额限制用
  4. green ethernet
  5. 一个简单的samba案例(测试与思考)
  6. 16进制数组转成10进制 qt_将十六进制转换为二进制qt
  7. 金旭亮:我是一只IT小小鸟(新书推荐 序)
  8. HBase二级索引的设计
  9. python金融衍生品大数据分析 pdf_Python金融衍生品大数据分析:建模、模拟、校准与对冲...
  10. 计算机无法打开隐藏文件,处理怎么打开隐藏文件
  11. Android点9图的使用与制作工具推荐
  12. 《动手学深度学习》(PyTorch版)代码注释 - 47 【Image_augmentation】
  13. 七大江河水系--淮河
  14. 日记|自2021-11-08始
  15. linux一级目录全解
  16. linux下修复windows10引导,ubuntu下 修复win10引导
  17. 病毒泄密一个接一个,有7招能保护你的数字生活
  18. 微信15分钟视频怎么发送(简单实用的方法)
  19. 通信系统与网络思维导图
  20. python flask 在线可视化平台系统

热门文章

  1. 电子制造业生产车间物料怎么管?方法有哪些
  2. mysql黑盒测试_黑盒测试记录二
  3. java swing 实现鼠标滑轮聚焦缩放图片
  4. 7.1 RAID(独立冗余磁盘阵列)
  5. pc端调用电脑摄像头及麦克风完成录像或录音并实现回放和上传服务器
  6. NYOJ 20 吝啬的国度
  7. 股权转让项目:厦门古龙温泉山庄开发有限公司60%股权转让
  8. Qt Creator编写C++中文乱码解决方法
  9. SQLserver分离数据库
  10. 打印机经常没反应的一个解决办法