点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程
这一节是最重要的部分。懂串口
通信的,可以绕过。
问题是:很多学
labview 的各种基础都没有,真让人捉摸不透,没学过 C 或者 C++,不懂数据结构,不过,如果你真的不懂懂,我还是讲一讲。
首先你要看说明书,保证物理连接正确。其次,找到你需要的协议。
假设你找到一个仪器模块的指令,如下。一般都会有输入命令,跟返回的。
首先,用串口助手测试下。先看自己需要的功能,一般仪器的功能都特别多。而自己一般需要测试输入通道或者输出即可。所以,先找到自己需要的功能。
上位机仪器的通信方式主要分为下面几种;
①,只发送指令,不接受指令。
②,不用发送命令,就只用读取响应。
③,发送一次指令,只读取一次响应。
④,发送一次命令,就一直连续读取响应
很多人,如果自己写
单片机的话,大多都一直发送命令出来,就是第②种。正常的仪器,是第①③④种居多。
所以,首先分清你的仪器的指令,有没有返回字符串等。
如上图所示,如果是这个仪器,你就按后面的功能发送。注意那些 dd 和 nn 是格式说明符。上图的仪器,dd 指仪器的 ID 号,如果你仪器是 01,你要输入 ASCII 格式,就是输入 *01A。注意不要混淆了格式符。
下面看看 Keithley2000 的指令怎么用。
如果是国外的仪器,说明手册里面,都会有个 Remote Opera
tion.见上图,是 Keithley2000万用表的说明书。自己看相关章节指令。
如果我们要读取 Keithley2000 测量读数,就可以用下面的 SCPI 指令。
在串口调试助手里或者 LabVIEW 发送一个 :
READ?然后就会返回仪器读数。其他指令参照说明书即可。不过国外的一些仪器,有些指令可能有先后顺序,需要按一定顺序发送。具体看说明书。
--------------------------------------------
如下是,另一个仪器的说明片段,差不多告诉了用户格式。
注意看我红框部分。每个仪器差不多都会有的。都有发送命令,和相应命令。然后发送的命令和相应的命令都是有格式的。按照说明书的格式来。
这个,是发送一次指令,就返回一次响应的。后面会详细解释。
这台仪器,还提供了例子,自己可以用这个例子测试一下仪器通不通。后面的接受数据部分,请看字符串那一节。
下面,我们把上图的例子部分,用 LabVIEW 写一下。
注意:命令串:$012B7(cr)中$012 是 ASCII 显示下的,而 B7 是十六进制显示下的。cr是回车符,即 16 进制的 OD。
由于显示不一样,所以我用连接字符串来组合。
这样,最简单的收发式的仪器通信就完成了。
问:我看自带的范例,在 VISA 写之后,都有个延时,这个延时,起个什么作用?
这个延时,主要是因为编程人员用的是这种组合。前面已经讲过了,它读取串口缓冲区所有数据,当你发送一个数据,要等待仪器回送完响应数据,再读取才是完整的数据,所以,要等待仪器响应。这个时间,看自己摸索,最好刚好合适,毕竟一直等待也不是最好的方法。
如果是本例,由于回送的字符串是固定的,如下图,有 11 个,那你就可以不要用延时。直接用固定字符串,这样,程序自己会自动等待 11 个字符串接受完再执行下一个。
正常情况下,如果接受的字符串是固定的,推荐使用固定字符串个数,就是如下图的方式来编程,等待延时这种方式不推荐。
注意:以上程序是发送一次指令,仪器回送一次响应的。有些仪器的指令,可能不需要返回指令。
下面举例一下:
比如某个仪器的开关接口,开关的命令如下,没有返回值;
输出允许:OUT1
禁止:OUT0
那么最简单的程序如下,控制开
有些仪器,检测到串口连接或者打开
电源就会往串口发送数据,利用如下组合就可以了。因为上位机只需要读串口,不需要写串口。
编写者:浅浅的小草
57