MSCOMM串口控件在VS2010中的使用
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*等类型。所以需要将数据类型进行转换。
![](/assets/blank.gif)
在需要发送数据时:
![](/assets/blank.gif)
5、注意事项
![](/assets/blank.gif)
文档下载
MSCOMM串口控件在VS2010中的使用相关推荐
- 串口数据visual c++ MSComm 串口控件程序开发
时间紧张,先记一笔,后续优化与完善. 在计算机中,数据通信主要有两种:一种是串口通信,每一个字符的二进制位按位排列停止传输,速度慢,但传输距离较远.鼠标口和usb口都属于串口.另一种是并行通信,每一个 ...
- VS2015中配置MSComm通讯控件和注意事项
1.MSCommon通讯控件前文回顾 MSComm 作为一个串行通讯控件.在为程序员串口通讯编程节省了很多时间,基于对话框的应用中加入一个MSComm控件非常简单. MSComm控件提供了两种处理通信 ...
- vc++6.0使用串口控件例程
vc++6.0使用串口控件例程 1.建立项目: 打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest; 2.在项目中插入MSComm控件 选择Project菜单下Add To Pr ...
- 常见的串口控件(1)
串口控件主要有三种: mscomm: 微软的东西,是VB中带的一个ActiveX控件,使用简单,性能一般,由于是ActivX控件,打包时需要注册好多信息,在Delphi中使用,建议使用VCL控件,编译 ...
- node-red教程6 串口控件的使用
#6.1 串口控件安装与介绍 串口控件是一个很有用的控件,它可以通过电脑或树莓派的串口收发数据.由于我们要做一个基于node-red的应用,并不是做一个只运行与电脑的纯软件,所以必然要与一定的硬件产生 ...
- 确定多重选择列表控件 (List Control) 中的选定内容
确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...
- android 获取控件在屏幕中的坐标
今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...
- MapX 控件在C# 中的应用 (一)
MapX 控件在C# 中的应用 (一) 关键字:MapX,C#,Net,ActiveX控件 /* * 在这段代码中,我们应用MapX控件结合老美地图做了最基本的 * 地图浏览功能:放大.缩小.拖动 ...
最新文章
- 多迪新手学UI设计,拿高薪必须掌握的几个小技巧?
- Protobuf windows
- 中国联通被指乱扣费 返还金额限制用
- green ethernet
- 一个简单的samba案例(测试与思考)
- 16进制数组转成10进制 qt_将十六进制转换为二进制qt
- 金旭亮:我是一只IT小小鸟(新书推荐 序)
- HBase二级索引的设计
- python金融衍生品大数据分析 pdf_Python金融衍生品大数据分析:建模、模拟、校准与对冲...
- 计算机无法打开隐藏文件,处理怎么打开隐藏文件
- Android点9图的使用与制作工具推荐
- 《动手学深度学习》(PyTorch版)代码注释 - 47 【Image_augmentation】
- 七大江河水系--淮河
- 日记|自2021-11-08始
- linux一级目录全解
- linux下修复windows10引导,ubuntu下 修复win10引导
- 病毒泄密一个接一个,有7招能保护你的数字生活
- 微信15分钟视频怎么发送(简单实用的方法)
- 通信系统与网络思维导图
- python flask 在线可视化平台系统