MSComm控件属性与事件
### MSComm控件属性与事件详解 MSComm控件是Visual Basic中常用的一个通信控件,主要用于处理串行通信的任务。下面将详细介绍MSComm控件的一些关键属性和事件,并通过具体的示例帮助理解。 #### CommPort属性 **功能**:设置或返回通信端口号。 **语法**: - 设置串口号:`void CMSComm::SetCommPort(short nNewValue);` - 查询当前串口号:`short CMSComm::GetCommPort();` **说明**: - `nNewValue` 取值范围:1~16。如果尝试打开不存在的串口号,则会引发错误。 - **注意**:必须在打开端口之前设置 `CommPort` 属性。 **程序示例**: ```vb ' 根据当前端口号选择所要打开的串口 m_Comm.SetCommPort(CInt(m_strCOM.Mid(3, 1))) ``` #### PortOpen属性 **功能**:用于打开或关闭串口,或返回串口的开关状态。 **语法**: - 打开或关闭串口:`void CMSComm::SetPortOpen(BOOL bNewValue);` - 返回串口的开关状态:`BOOL CMSComm::GetPortOpen();` **说明**: - 当 `bNewValue` 为 `TRUE` 时,打开串口;反之,关闭串口。 - 当程序终止时,MSComm 控件会自动关闭串口。 - 使用 `CMSComm::GetPortOpen()` 方法可判断串口是否已打开。 **程序示例**: ```vb If m_Comm.GetPortOpen() Then m_Comm.SetPortOpen(False) Else m_Comm.SetPortOpen(True) ' 打开串口按钮颜色正常 GetDlgItem(IDC_BUTTON_OPENPORT).EnableWindow False ' 关闭串口按钮颜色变灰 GetDlgItem(IDC_BUTTON_CLOSEPORT).EnableWindow True Else AfxMessageBox "无法打开串口" End If ``` #### RThreshold属性 **功能**:设定接收缓冲区的阈值,即接收多少个字符后触发 `OnComm` 事件。 **语法**: - 设置阈值:`void CMSComm::SetRThreshold(short nNewValue);` - 获取阈值:`short CMSComm::GetRThreshold();` **说明**: - 当接收缓冲区中的字符数达到 `nNewValue` 时,会触发 `OnComm` 事件。 - 例如,设置 `nNewValue` 值为 1,则每当接收缓冲区接收到一个字符时,都会触发 `OnComm` 事件。 #### InputMode属性 **功能**:设置或返回传输数据的类型。 **语法**: - 设置数据类型:`void CMSComm::SetInputMode(long nNewValue);` - 获取数据类型:`long CMSComm::GetInputMode();` **说明**: - 0:以文本方式取回数据。 - 1:以二进制方式取回数据。 **程序示例**: ```vb ' 设置输入方式为二进制方式 m_Comm.SetInputMode 1 ``` #### Settings属性 **功能**:设置或返回波特率、奇偶校验、数据位数、停止位数等通信参数。 **语法**: - 设置通信参数:`void CMSComm::SetSettings(LPCTSTR lpszNewValue);` - 获取通信参数:`CString CMSComm::GetSettings();` **说明**: - 此属性必须在串口关闭时进行设置,否则会产生错误。 - `lpszNewValue` 对应实参为一字符串,格式为 `"BBBB,P,D,S"`,其中: - BBBB — 波特率 - P — 奇偶校验 - D — 数据位数 - S — 停止位数 **程序示例**: ```vb Dim SetSettings As String UpdateData True SetSettings = m_strBaudRate & "," & m_strParityBite.Mid(0, 1) & "," & m_strDataBite & "," & m_strStopBite ' 设置串口传输参数 m_Comm.SetSettings SetSettings ``` #### InBufferSize与OutBufferSize属性 这两个属性分别用来设置或返回输入缓冲区和输出缓冲区的大小。 **InBufferSize** - **功能**:设置或返回输入缓冲区的大小。 - **语法**: - 设置缓冲区大小:`void CMSComm::SetInBufferSize(short nNewValue);` - 获取缓冲区大小:`short CMSComm::GetInBufferSize();` - **说明**:设置值的默认大小为1024字节。 **OutBufferSize** - **功能**:设置或返回输出缓冲区的大小。 - **语法**: - 设置缓冲区大小:`void CMSComm::SetOutBufferSize(short nNewValue);` - 获取缓冲区大小:`short CMSComm::GetOutBufferSize();` - **说明**:设置值的默认大小为512字节。此值不宜过小以免导致缓冲区溢出,也不宜过大以免浪费资源。 通过以上介绍可以看出,MSComm 控件提供了丰富的属性和事件来实现串行通信的功能。开发者可以根据实际需求灵活配置这些属性,从而实现高效稳定的通信过程。
剩余15页未读,继续阅读
- kimya2014-08-17还不错,挺有用的,知道了很多函数以及使用方法
- 粉丝: 1
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算
- 单片机实验仿真设计报告
- 欧姆龙NJ NXPLC 全ST程序案例,全程序无加密,公司级框架,提供项目源码框架FB源码,触摸屏源码 需要一定ST基础才能看懂 重在分享编程思想 没用过该控制器的请慎用 先安装1.2版本的环
- “处暑”中小学课侦探教案模板.pptx
- “艾灸中医养生”讲座教案课件.pptx
- “开学第一课”小学儿童教育家长会宣传模板.pptx
- “七夕节情人节”宣传教育课件模板.pptx
- “立秋”宣传教育课件模板.pptx
- 深圳“幼儿园新生家长会”课件教案模板.pptx
- 读书的意义与好处主题班会“与书籍同行”.pptx
- 书法“有趣的汉字”教学课件教案模板.pptx
- 三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序 功能:通过三菱fx3u 485ADP-MB板对4台欧姆龙E5cc温控器进行modbus通讯,可以实现温度在触摸屏上设置,也可以在
- 麻雀搜索算法(SSA)文章复现(改进Tent混沌初始化+改进Tent混沌扰动+高斯扰动)-CSSA 复现内容包括:改进算法实现、23个基准测试函数、改进策略画图分析、文中三种混沌图分析、与
- 蚁群算法 改进蚁群算法 Dijkstra算法 遗传算法 人工势场法实现二维 三维空间路径规划 本程序为蚁群算法+Dijkstra算法+MAKLINK图理论实现的二维空间路径规划 算法实现: 1)
- 群智能多目标优化算法-MOPSO(多目标粒子群优化)论文汇报
- 纯电动汽车动力性经济性开发程序 Matlab AppDesigner 汽车性能开发工具 电动汽车动力性计算 电动汽车动力总成匹配 写在前面:汽车动力性经济性仿真常用的仿真工具有AVL Cruise、a