LabVIEW干货
直播中

zhou2sheng

10年用户 1849经验值
擅长:嵌入式技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[Labview经验]

小草手把手教你 LabVIEW 串口仪器控制—使用串口调试小助手

点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程

虚拟串口一般是跟串口调试小助手一起用来调试的。下面讲一下它的应用。主要分跟仪器在线连接调试,还有测试自己的程序。

①,调试下位机指令,使用串口调试小助手,连接仪器调试。
一般你拿到一台仪器,得到指令后,建议用串口调试小助手来测试指令,指令测试没问题后,再用 labview 来进行编程。

很多人指令都没弄清楚,然后用 LabVIEW 编写了程序,然后收不到数据之类的,很可能你指令不对,可能发送的不是 16 进制的,或者发送的末尾没加校验叫终止符之类。所以,循序渐进的来的话,先用串口调试小助手测试指令,然后把指令在写到 VISA 写入里面。

串口调试小助手,网上有很多。注意,有些串口调试助手,写的可能不好,我以前见过一些从网上随便下的,然后发送指令有问题。后来发现,十六进制下,字符串之中的空格符没给自动的去除,还有各种的,所以,前提是,保证你串口助手没问题。


我用的是这个,挺好用的。常见的,就是字符串输入框输入命令,记得分清是不是 HEX发送。然后还可以多条字符串发送。

先配置好串口的参数,有些可选项,像 DTR 和 RTS 的,按要求选或者不选。

正常情况下,用单一的字符串发送就可以了。比如你的协议发送是 SETV12.000(假定是程控电源的,设置电压为 12.000V)。如果通讯没问题,程控电源回送一个 OK。在串口助手里,就可以看到 OK。如上图所示。


如果你连串口调试助手都木有收到信息,那你用 LabVIEW 编写肯定是有问题的。所以,前期一定要弄个明白这个协议没问题。


另外,像 Keithley2400,在 LabVIEW 设置里,貌似有个终止符的,要加个 OD 回车符,前面我讲过,属性里有个终止符输出,而说明书里没有写明,这里注意一下。

很多时候,你调试不通,其实都是细节问题。自己要养成良好的处理事情的习惯。自己多琢磨一下,然后实际调试去验证。

② 调试自己的上位机程序,即自己写的 LabVIEW 程序。
问:当你用串口调试小助手跟仪器调试时候,指令都正确了。可是自己写的程序,老是不对,或者收不到数据,或者乱七八糟,该怎么办?
答:请使用串口调试小助手。
操作方法:先使用虚拟串口创建一对串口(如果创建了,就不必再重复了)。比如你创建的是 COM3 和 COM4。你打开串口调试小助手,选择 COM3,然后自己写的 LabVIEW 程序选择 COM4,配置好对应的参数,然后你的 LabVIEW 程序就可以跟你的串口调试小助手进行读写通讯了。

然后你把你下位机给上位机的指令,给自己的 LabVIEW 程序发送一遍,看自己的程序怎么样。第一,能不能收到。这个一般都可以收到。第二,处理后的数值对不对。这个就需要自己截取然后各种操作得到想要的。慢慢琢磨。

有时候,上位机收到的是一串字符,可能是不同的间断的,那可能就需要多条字符串发送。一般串口调试小助手有多条循环发送的功能,见下图,我这个就自带的,他会轮流发送字符串。


另外,可能很多人 LabVIEW 进行串口读取(注意,这里只是读取,没有写入串口)的程序,大多是如下的组合。


请看 WHILE 循环里面,一个“读取串口字节数”和“VISA 读取”。前面已经说了,这两个函数的功能就是读取串口缓冲区已有的字符串。好比你有个水缸,每次使用一次这个组合,就是把水缸的一下子取干净。我加了个判断,没有数据就不读,节约效率。

有些人可能用这个“黄金组合”,收不到数据,那你最好程序里高亮试试,有时候,是下位机发送数据太慢,或者读取的太快,或是读取的是不能正常显示的,如 0A0D 之类的。


经验:用这种 读取串口字节数+VISA 读取组合,可以防止下图错误发生,因为有数据就读,没数据就不读。而如果你指定要读的字节数,当超时时间到之后,如果还没读到指定直接,就会报错。


但是,我写过一个协议,是先发送一段字符,过几毫秒马上又发送结束符 0D,所以,前面数据刚读出来,就被后面的覆盖了,导致我每次都只能看到 0D,后来才知道,不是一起发的,是间断发的。用这种组合,不容易掌握字符串的字数。因为它有数据就读出来,所以,调试的时候,自己多小心。


调试问题就讲这么多。具体靠自己琢磨。

编写者:浅浅的小草

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

回帖(51)

超级口水哥

2015-1-31 11:16:50
还研究的没有头绪
举报

林云

2015-5-18 11:48:31
0D0A之类的数据有影响,能不能详细点!!!我发送的数据格式的帧尾就是0D0A,发送和接收同时运行的时候串口接收数据会偶尔漏数据。如果只接收,接收数据能保证完全正确。
举报

林云

2015-5-18 18:30:31
本帖最后由 Jacob_luna 于 2015-5-18 18:38 编辑

调试了一下,0d0a数据没什么问题啊,不知道你的是什么问题。按照你所给的程序,读取缓冲区的数据在显示出来之前应该已经被刷新了,所以我们应该是看不到读取缓冲区的数据。读取缓冲区,个人觉得不是条件读取,应该是顺序读取,有数据就读出来,没数据读空的也没关系,自己会处理就好。
举报

林云峰

2015-7-4 16:17:33
学习了,很好的资料,谢谢分享!希望更多labview资料可以分享
举报

ayhui1984

2015-7-29 11:35:02
谢谢分享,很有用。
举报

羽翼i

2015-7-29 22:42:14
对现在的我来说太有用了,继续努力
举报

羽翼i

2015-7-29 22:44:42
好厉害的说。赞赞赞
举报

王东

2015-7-30 09:11:44
这个得学习下,不错滴
举报

kingsley2015

2015-8-5 23:35:59
看看,不能下载
举报

jhjoi

2015-8-13 17:23:54

学习了,很好的资料,谢谢分享!
举报

tdtychfh

2015-10-22 22:14:21

学习了赞一个
举报

jiluyu

2015-12-16 15:56:18
真好真好!!!!非常感谢,正好要用到
举报

张磊

2015-12-18 01:10:57
  太漂亮了  6的不行行!菜鸟学习了,谢谢小草!!
举报

不说

2016-1-7 11:46:12
很好的资料。多谢楼主分享
举报

柳絮留心

2016-1-11 17:55:09
小草您好,请教一个问题,自己编写了一个串口调试程序,想控制下位机,发送数据帧,我把最左边的开关一直设为开(相当于自动发送),能不能实现当数据帧改变时,有输出,没有改变时无输出
举报
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

我是桃桃桃9

2016-3-4 19:02:38
能发一下串口调试小助手的程序吗?谢谢
举报

radiopharm

2016-3-17 16:52:48
串口调试小助手
举报

xuhzhi4098

2016-3-29 10:03:02
很好的建议
举报

孟凡涛

2016-5-10 23:40:54
非常感谢楼主,楼主的教程非常好,受益匪浅!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分