小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口

有些人,学习一样东西时候,喜欢现成的例子。很多人学习一门技术,都喜欢现成的例子开始,比如学单片机的啊,最开始都是修改的例子吧,学语言的也是。最开始都是模仿。

这个年头看书上的理论知识太浪费时间了。所以啊,很少人买个手机还去看手机说明书,或者买个电脑,看电脑说明书一样。

事实上,学习 LabVIEW 的人有福了。因为例子很多,而且到处都是,应接不暇,还是免费的……

我的观点是:LabVIEW 自带的范例写的很好。大家看看范例,就很方便大家学习和理解了。不要去找很多相关的资料,又不是写论文需要达到多少文献。

关键句子:看 LabVIEW 自带的例子。

本手把手系列,属于启蒙级的,对串口有了解的,可以略过。

如果你对 LabVIEW 的串口使用不明白。那你就看例子吧。以后你会发现很多类似的例子教学。
打开的范例操作如下图所示。
<ignore_js_op> 

找到“硬件输入输出”→“串口”,里面有好多范例,自己找个吧。其实都差不多。当然,你也可以左边的选项,搜索里面搜“VISA”,也可以得到这些范例。

现在双击打开某个范例“基本串行写入和读取”。
<ignore_js_op> 

<ignore_js_op> 

打开了范例之后,我们来研究下它的情况,如下图。
<ignore_js_op> 

我们看下程序面板,结构很简单。
如果看过我的手把手系列前面的内容,就会发现,就是我之前说的 4 个函数。
①配置串口
②写数据到串口 的 VISA 写入,从串口读数据 的 VISA 读取
③关闭串口
<ignore_js_op> 

用 VISA 函数,最常用的,就这几个。我写了这么多串口程序,基本也就用了这几个,其他的,自己看着办。
<ignore_js_op> 

如果我们要连续读串口后者连续写串口 ,那就要记得 加循环了。记得循环的位置,配置 VISA 的后面,跟关闭 VISA 的前面。这个道理很简单,

Example:
你要把一个屋子的东西,都搬到门外,那你只需要打开一次门,然后把东西搬完了,再关闭门。对吧?你不用进门一次,开一次门,搬出去了,关门,然后进门,再开门,出门再关门。。。。。很累的吧。。。。
还有,结尾一定要关闭 VISA。不关闭 VISA,你的串口的控制权,一直没被释放,你的串口就工作不正常了。

对 VISA 串口的理解,可以用打电话解释。就拿打电话来说吧。
①,首先,拨对方号码,号码肯定要配置正确吧,不正确肯定达不到对方的, VISA 配置串口相当于你给对方拨电话。
②,其次,给对方说要说的话,这个相当于 VISA 串口写。你说话,当然也也听对方说
话,那就是 VISA 串口读
③,通话结束,要挂电话,挂电话相当于 关闭 VISA.

下面示意图:
拨电话→VISA 串口配置
讲电话→VISA 读写(这里就是各种命令啦。)
挂电话→VISA 关闭
有空记得看 VISA 的四个函数的说明。其实串口很容易。难点在于你读到数据,怎么转化成自己需要的数据。而且保证数据无误。

深入分析:
首先,进行仪器通信前,注意配置你的仪器通讯方式。

正常情况下,连接好你的仪器(这个看说明书,有的是 232 接口,有的是 485 接口,232接口的,直接连接电脑的 COM 口就可以了,如果是 485 的,电脑都不自带,需要买个485转换器)连接好仪器后,有些仪器,需要设置远程方式。

例如:keithley2000 的万用表,需要按如下方式设置为 232 接口。
<ignore_js_op> 

设置好了之后,就可以用进行串口通信了。

前面给大家看了个最基本的NI自带的例子,不过这个例子,单次运行只能运行一次,

问:如何让它持续的读写直到按下停止键?
答:前面提示过,要加循环,在 VISA 串口配置和 VISA 关闭中间加。为什么要这样呢?前面已经回答了。
示例图如下:
<ignore_js_op> 
为了方便大家观看,我把While循环框颜色调整成红色。(估计会有人问怎么调节颜色,这个用工具栏颜色笔。再不懂自己看书吧。这个不是本文内容)

自己记得这么加,然后单击 工具栏的 “运行一次”按钮,就会一直在读写状态了。记得循环框的问题。
但是,你这样,生成 EXE 程序后,打开 EXE 就运行了,会报错,因为你不能自己改变串口参数再运行。一般程序都是运行程序后,设定串口参数,比如 COM 口,波特率等,如果仅仅按照上图所示,是无法在程序中设定的。

问:如果我想先运行 LabVIEW 程序,然后在线改变串口配置参数,然后再进行读写串口,我改怎么做?
答:这个需要考虑程序结构问题。
下面细讲。如果你要运行 LabVIEW 后,改变 COM 口参数等,然后打开串口操作读写等,你需要考虑你的程序逻辑结构。可能逻辑已经有了,就是你所谓的想要的操作。那么怎么实现就是编程问题了。

最简单的实现方式,是上图的结构,外面在套一个循环。
<ignore_js_op> 

记得,画圈的3 个按钮的机械动作,都是释放时候触发,按钮有三个机械动作。这个很每本书都会讲,或者自己百度相关知识。

怎么设置见下图所示。
<ignore_js_op> 

如果你觉得打开串口跟关闭串口用2 个按钮比较不好看。那你可以只用一个按钮,用它的两个状态表示”打开串口”和”关闭串口”。具体需要改动的看下图我画圈的地方。

下面解释下结构:
利用了用一个局部变量(或者自己使用 “属性节点”→“值”)。

当前面打开串口为真时,进入串口程序,然后运行一次配置后,进入读写 VISA 串口循环,程序就一直在这个读写状态。由于打开串口为真,后面用一个布尔的“非”操作,这样,WHILE 循环的条件就为假,就一直进行 WHILE 循环,当你再次点击“打开串口”时候,打开串口这个控件值就为“假”,经过“非”操作,WHILE 循环条件值为真,退出循环。
<ignore_js_op> 
这个例子很容易吧。
差不多就是一个简单的 LabVIEW 串口助手程序了。当然你也可以用事件结构,可能一般初学者对事件结构都不是很了解。
注意:记住如果是用局部变量,请更改按钮的机械动作。否则会出现以下错误。
<ignore_js_op> 

提示:触发动作与局部变量不兼容,这个时候,你要改为如下动作。看我红框部分。
<ignore_js_op>
原文地址:https://www.cnblogs.com/mrchige/p/6238025.html