请问下怎样用Labview软件实现用电脑串口通信,使电脑能够自发自收信息。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问下怎样用Labview软件实现用电脑串口通信,使电脑能够自发自收信息。相关的知识,希望对你有一定的参考价值。

请问下怎样用Labview软件实现用电脑串口通信,使电脑能够自发自收信息。
能够给出具体的程序框图吗?

在Labview 实例中 输入 串口  即可搜索出自带串口通信 例子:Basic Serial Write and Read.vi

参考技术A 电脑自发自收 不复杂
只有将 9针中 2、3 两针短接,用 串口调试工具或者串口助手 就可以了

当然,也可以自己编软件

关于 串口调试工具或者串口助手 请看 武汉鸿伟光电,有 下载

至于说 编程 ,VB VC Delphi 等均可
网络上有电子文档

Labview软件 也行
参考技术B 电脑上要是有2个comm口,则可以通过串口线连接,通过lab的串口函数配置各个端口的收、发状态和速率等。程序上为数据流方式,将发送端与接收端直连即可.

LabVIEW如何实现高性能串口助手-附代码

LabVIEW基本上还是在Windows系统下进行开发。在Windows下,提供了非常多的系统接口,供应用开发时调用来实现各种功能,在LabVIEW里面也是可以通过对这些系统接口进行封装,形成LabVIEW里面的控件,供LabVIEW程序开发时调用。在之前的文章里面有提到过,在嵌入式开发领域,PC端的串口工具是非常重要的,但是有不少串口工具因为性能原因,在数据量较大时,经常会出现卡死的问题。另外固有的串口工具无法进行改造,来实现串口数据采集后的更多应用功能。前面的文章有用LabVIEW VISA API快速的开发了串口助手,但是串口数据接收效率比较低,因此本文将详细介绍,怎么用LabVIEW来快速开发更高性能的串口程序。

一 如何实现高性能的串口收发

我们知道一般单片机、ARM、FPGA等嵌入式系统的板子基本都会带有串口,因为协议简单,而且成熟,有许多现成的东西可以借鉴使用。在PC通过串口获取嵌入式系统传来的信息或数据,LabVIEW在Windows下一般有几种可选方案:

  1. 使用开发环境自身提供的串口操作接口函数;
  2. 使用ActiveX控件MSComm;
  3. 直接调用WindowsAPI实现串口操作。

直接调用WindowsAPI实现串口操作实现难度相对要大一些,要对Windows底层API比较熟悉,而且这些API的封装,MSComm控件已经实现好了。另外前面介绍过LabVIEW的VISA接口操作串口,收发效率是比较低的,因此选择MSComm控件来实现高性能的串口程序。

二 什么是MSComm

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

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

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

2.1 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)

2.2 MSComm控件的事件

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

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

另外十种情况是通信错误时产生,即错误代码。关于MSComm的更详细的资料可参考Microsoft的msdn网站。

三 MSComm控件的注册

在LabVIEW中使用MSComm控件时,需要导入--ActiveX控制至选板才可以看到MSComm控件。但是如果Windows PC的MSComm控件注册有问题,那么通过导入也是看不到的,那么就需要先下载注册MSComm控件。

首先将下载的mscomm32.ocx文件放到C:\\windows\\system32下,然后在运行中输入Regsvr32 C:\\windows\\system32,这时会弹出注册成功的提示框:

再在运行中输入Regedit命令打开注册表,找到HKEY_CLASSES_ROOT\\Licenses,在里面添加主键,右键选择“新建”--“项”,然后将该项命名为4250E830-6AC2-11cf-8ADB-00AA00C00905,在右边右键“默认”选择“修改”,然后输入数值kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun。注册mscomm32.ocx控件防止在LabVIEW中导入时发生“类别未授权使用”错误。
注册完成后,重启一下电脑,此时就可以看到MSComm控件了(图中第三个):

四 LabVIEW使用MSComm控件实现串口程序

前面提到过一般的应用,LabVIEW中直接用VISA串口API函数就可以实现,方便快捷,但是对于需要使用中断方式进行串口通信的,就得使用MSComm控件了。操作ActiveX控件,最主要的就是要使用好它的属性、方法函数,并做好中断事件的回调处理。LabVIEW针对ActiveX设置的控件在“互连接口”的“ActiveX”中提供了8个功能函数:Automation Open, Close Reference, To Variant, Variant to Data, Invoke Node, Property Node, Register Event Callback, UnRegister Event Callback。

4.1 LabVIEW中使用MSComm控件

首先需要在LabVIEW中加入MSComm,在“工具”--“导入”--“ActiveX至选板”中将MSComm添加到LabVIEW环境,选择默认路径。然后可以在前面板的".Net与ActiveX"中找到mscomm然后拖拽到前面板中。也可以先在前面板放置ActiveX容器,然后右键选择mscomm控件:

调用ActiveX控件创建客户端应用程序:主要用到“互连接口”--“ActiveX”中的8个函数:

ActiveX事件注册相关:即使用事件回调处理中断事件等,

4.2 编程注意事项

对于MSComm控件,编程时使用的都是其自动化引用,即LabVIEW将ActiveX控件作为对象来处理。连接属性节点到控件,可以查看所有属性,连接调用节点时,MSComm没有提供方法,所以会显示没有方法。以下是LabVIEW中看到的MSComm的属性:

另外,回调事件注册首先要确定好需要传输什么样的数据,如果包含多种数据类型,可以使用簇来解决,回调函数中会自动创建与该数据类型相同的事件参数,并提供ActiveX控件的引用。

五 文末活动

对于LabVIEW的串口实现源码,感兴趣的朋友可以在本公号(技塑未来)回复“LABV_UART”获取。同时前面提到的LabVIEW VISA串口助手的实现,也一并放在这一个LabVIEW project下了。

以上是关于请问下怎样用Labview软件实现用电脑串口通信,使电脑能够自发自收信息。的主要内容,如果未能解决你的问题,请参考以下文章

labview如何实现串口同时接收和发送?

android手机的APK软件用电脑下载的,怎样安装到手机上?

电脑自带蓝牙与HC-06蓝牙模块使用串口助手通信

怎样用vc编写上位机软件

labview怎么用串口发命令

电脑怎么打开手机软件?