Labview串口通信MSComm实现串口收发


前言

本文介绍使用 ActiveX 控件 MSComm 实现高性能的串口收发。


一、什么是 MSComm

MSComm 作为一个串行通讯控件,每个 MSComm 控件,都对应一个串口,若需访问多个串口时必须使用多个 MSComm 控件。

MSComm 是 ActiveX 控件,可以在 PC 上控制串口数据的发送和接收,支持查询方式和中断方式(Windows 下称为事件驱动方式)。

  • 中断方式:当串口有数据到达或有数据写入到串口缓冲中时,就会触发中断,可以使用 OnComm 捕获事件并进行处理。这种方式响应及时,比轮询方式效率要高。
  • 查询方式:实际上仍热是事件驱动的,需要检查 CommEvent 属性值来查询事件。

二、MSComm 控件下载

点此链接:MSComm控件
在这里插入图片描述

三、MSComm 控件的注册

1、将上面下载的 MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx 这四个文件放到 C:\windows\system32(32位系统)C:\Windows\SysWOW64(64位系统)目录下。

2、在“此目录“下找到“cmd.exe”文件,右键以管理员身份运行,在弹出的对话框内输入:regsvr32 mscomm32.ocx 后,回车。控件注册成功后,如下图。
在这里插入图片描述

四、使用 MSComm 控件

1、前面板放置控件

①、打开前面板,右键 -> 容器 -> ActiveX容器
在这里插入图片描述
②、右键 ActiveX容器 -> 插入 ActiveX对象
在这里插入图片描述
③、选择 Microsoft Communication Control,version 6.0,点击确定,得到下图的 MSComm 控件
在这里插入图片描述
在这里插入图片描述
④、右键点击 MSComm 控件,选择“属性浏览器”,可得该控件的属性
在这里插入图片描述

2、MSComm 的常用属性

  • CommPort:设置并返回通讯端口号
  • Settings:以字符串形式设置并返回波特率、奇偶校验、数据位、停止位
  • PortOpen:设置并返回通讯端口的状态。也可以打开和关闭端口
  • Input:从接收缓冲区返回和删除字符
  • InputLen:设置并返回 input 属性从接收缓冲区读取的字符数
  • Output:向传输缓冲区写一个字符串
  • RThreshold:在设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回要接收的字符数
  • CTSHolding:确定是否可通过查询 CTS 线的状态发送数据
  • SThreshold:设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数
  • CDHolding:通过查询 CD 线的状态确定当前是否有传输
  • DSRHolding:确定 DSR 线的状态
  • EOFEnable:确定在输入过程中 MSComm 控件是否寻找文件结尾(EOF)
    在这里插入图片描述

3、MSComm 控件的事件

MSCOMM控件只使用一个事件 OnComm,用属性 CommEvent 的十七个值来区分不同的触发时机。主要有以下几个:

  • CommEvent=1时:传输缓冲区中的字符个数已少于 Sthreshold (可设置的属性值)个
  • CommEvent=2时:接收缓冲区中收到 Rthreshold(可设置的属性值)个字符,利用此事件可编写接收数据的过程
  • CommEvent=3时:CTS线发生变化
  • CommEvent=4时:DSR线发生变化
  • CommEvent=5时:CD线发生变化
  • CommEvent=6时:检测到振铃信号
    另外十种情况是通信错误时产生,即错误代码。

五、实现串口收发

1、搭建虚拟串口

参考我的上一篇博客:https://blog.csdn.net/qq_41839588/article/details/131936554?spm=1001.2014.3001.5501

2、发送测试

程序中使用的是 COM8 口,因此开一个虚拟串口 COM9,COM9(发) --> COM8(收)
在这里插入图片描述

3、接收测试

程序中使用的是 COM8 口,因此开一个虚拟串口 COM9,COM8(发) --> COM9(收)
在这里插入图片描述

4、后面板核心程序框图

在这里插入图片描述

六、程序自取

链接:https://download.csdn.net/download/qq_41839588/88104522


我的qq:2442391036,欢迎交流!


猜你喜欢

转载自blog.csdn.net/qq_41839588/article/details/131927392