注明:本帖子是手把手系列第6个帖子,属于启蒙级的教程,
建议大家按我发帖子的顺序来看,方便大家理解。请不要跳跃式的阅读。
很多人现在看书,都跳跃式的看,选择性的看,导致有些细节的部分没有掌握到,然后又因为某个细节耽误很多时间。
以上只是个人建议,高手可以略过本帖。
===============================================
从手把手系列第1贴我就写了,用LabVIEW来写串口驱动控制仪器,只需要下图的几个函数即可。
事实上,真的只需要下面几个函数。
所以,LabVIEW写个串口程序,其实很简单的。
问题是,在群里,有很大部分的人,问的就是串口,这个问题,那个问题。所以我才写这帖子。
===============================================
没写过串口的人可能会问:你都说了串口很简单啊,就那么几个函数,为什么还有这么多人在问?
我只能回答:不注重细节和自己的程序思维。
===============================================
首先,针对今天群里一个人的问题。

一般的串口控制结构是:①配置(打开)串口,②读写串口,③关闭串口。
我觉得这几个之间,配置VISA串口,是个很需要斟酌的部分。
配置串口是进入串口通讯的钥匙。首先你配置成功了,才能进行正确的通讯。
配置串口时候,最好是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的上面修改。
因为,新建出来的数据类型,肯定是对的。
需要注意的是:停止位那里,不是常数 1 1.5 2等,实际是10,15,20数值。这里最好右键新建常量然后选择对应的枚举类型。
更需要注意的是:配置串口,顶端有个 启用终止符,一般默认是 真,终止符一般默认是OA,即换行符。
有些人接受的字符串,里面含有十六进制的OA,然后每次数据接收到OA就停止了,然后就以为程序有什么问题,其实就是没有配置好VISA,终止符没有设定为 假。
那为什么配置VISA要搞个终止符呢?
(注意:这个函数的终止符,只是接受的终止符,只是对LabVIEW而言。)
终止符,是个条件,很多仪器上,也有终止符,而且终止符的优先级高。
比如你要用”VISA读取“接收1000个字符,而还没接受完毕,收到了终止符OA,那么程序就当一个命令结束了。后面的字符串,放入下一个命令里面去。对编程很方便的,如果你传输的字符没有终止符,我建议用终止符来做终止条件,这样,比你在 VISA读去里读取固定的字节好多了。
好了,说到了VISA读取,我们看下VISA读取。
首先看下VISA读取帮助。有个必填参数,叫VISA读取,你必须指定你要读的字节数。
问题来了,这个字节数怎么确定呢?

一般的组合,如上图所示。

组合的前面,是VISA串口字节数,函数路径见上图,其实就是一个属性节点,看那个bytes at port就应该明白了。
它利用一个读取缓冲区字节数,读到字节数,就确定了VISA读取里面那个字节数,然后用读取VISA读出来。
意思就是,前面的先侦测下串口缓冲区有多少数据,侦测完了就跟告诉VISA读,VISA就全读出来,。
这个组合的功能是,读取VISA串口已有的全部数据。
很多人,也不明白什么意思,看到很多地方这么用,然后自己也这么用。
还有的时候,如果是用MODBUS协议,你发送一个命令,会回复固定的字节数,这样VISA读取那个参数就确定了。
注明一点:串口有个缓冲区,存在计算机内存里,VISA读取,就是从缓冲区读取数据,读完之后,读取的就不存在缓冲区里了。如果你没读取,那就一直在缓冲区里,直到缓冲区溢出。其实就好比一个水桶,写VISA是往水桶进水,读VISA是出水。你也可以想想队列的原理,差不多的。
==========================
现在看下图。
我用借助串口调试助手和虚拟串口,向LabVIEW编写的一个最简单的例子发送字符串。
发送的字符串是010203 0A 050607(十六进制显示)。
VISA串口配置我没都默认,结果我收到的字符串接收到 0A,就终止了。后面的050607,到了下一次接收了。
这个例子很形象吧。说明了终止符的厉害,默认不配置就是启用终止符,终止符是OA。


好了,今天先讲这么多。
关键词:VISA配置,停止位,终止符。
感谢大家的阅读。
建议大家按我发帖子的顺序来看,方便大家理解。请不要跳跃式的阅读。
很多人现在看书,都跳跃式的看,选择性的看,导致有些细节的部分没有掌握到,然后又因为某个细节耽误很多时间。
以上只是个人建议,高手可以略过本帖。
===============================================
从手把手系列第1贴我就写了,用LabVIEW来写串口驱动控制仪器,只需要下图的几个函数即可。
事实上,真的只需要下面几个函数。

所以,LabVIEW写个串口程序,其实很简单的。
问题是,在群里,有很大部分的人,问的就是串口,这个问题,那个问题。所以我才写这帖子。
===============================================
没写过串口的人可能会问:你都说了串口很简单啊,就那么几个函数,为什么还有这么多人在问?
我只能回答:不注重细节和自己的程序思维。
===============================================
首先,针对今天群里一个人的问题。

一般的串口控制结构是:①配置(打开)串口,②读写串口,③关闭串口。
我觉得这几个之间,配置VISA串口,是个很需要斟酌的部分。
配置串口是进入串口通讯的钥匙。首先你配置成功了,才能进行正确的通讯。
配置串口时候,最好是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的上面修改。
因为,新建出来的数据类型,肯定是对的。
需要注意的是:停止位那里,不是常数 1 1.5 2等,实际是10,15,20数值。这里最好右键新建常量然后选择对应的枚举类型。
更需要注意的是:配置串口,顶端有个 启用终止符,一般默认是 真,终止符一般默认是OA,即换行符。
有些人接受的字符串,里面含有十六进制的OA,然后每次数据接收到OA就停止了,然后就以为程序有什么问题,其实就是没有配置好VISA,终止符没有设定为 假。
那为什么配置VISA要搞个终止符呢?
(注意:这个函数的终止符,只是接受的终止符,只是对LabVIEW而言。)
终止符,是个条件,很多仪器上,也有终止符,而且终止符的优先级高。
比如你要用”VISA读取“接收1000个字符,而还没接受完毕,收到了终止符OA,那么程序就当一个命令结束了。后面的字符串,放入下一个命令里面去。对编程很方便的,如果你传输的字符没有终止符,我建议用终止符来做终止条件,这样,比你在 VISA读去里读取固定的字节好多了。
好了,说到了VISA读取,我们看下VISA读取。
首先看下VISA读取帮助。有个必填参数,叫VISA读取,你必须指定你要读的字节数。
问题来了,这个字节数怎么确定呢?

一般的组合,如上图所示。

组合的前面,是VISA串口字节数,函数路径见上图,其实就是一个属性节点,看那个bytes at port就应该明白了。
它利用一个读取缓冲区字节数,读到字节数,就确定了VISA读取里面那个字节数,然后用读取VISA读出来。
意思就是,前面的先侦测下串口缓冲区有多少数据,侦测完了就跟告诉VISA读,VISA就全读出来,。
这个组合的功能是,读取VISA串口已有的全部数据。
很多人,也不明白什么意思,看到很多地方这么用,然后自己也这么用。
还有的时候,如果是用MODBUS协议,你发送一个命令,会回复固定的字节数,这样VISA读取那个参数就确定了。
注明一点:串口有个缓冲区,存在计算机内存里,VISA读取,就是从缓冲区读取数据,读完之后,读取的就不存在缓冲区里了。如果你没读取,那就一直在缓冲区里,直到缓冲区溢出。其实就好比一个水桶,写VISA是往水桶进水,读VISA是出水。你也可以想想队列的原理,差不多的。
==========================
现在看下图。
我用借助串口调试助手和虚拟串口,向LabVIEW编写的一个最简单的例子发送字符串。
发送的字符串是010203 0A 050607(十六进制显示)。
VISA串口配置我没都默认,结果我收到的字符串接收到 0A,就终止了。后面的050607,到了下一次接收了。
这个例子很形象吧。说明了终止符的厉害,默认不配置就是启用终止符,终止符是OA。


好了,今天先讲这么多。
关键词:VISA配置,停止位,终止符。
感谢大家的阅读。