微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > labview串口通信的一些心得

labview串口通信的一些心得

时间:10-02 整理:3721RD 点击:
labview中串口通信直接用labview中自带的visa是最方便的,在调试过程中的注意事项,

一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。

二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),

这里是指串口通信中,如果不是在串口通信,我们可以做个小小的验证,


在前面板中,字符串在正常显示的情况下,你输入00,跟字符串00也会匹配,指示灯也会亮的,但是在串口通信中,一定注意,

所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。(这一点尤其要注意)

在与单片机通信的时候,假如说跟下位机的协议是发送字符串00,那么开始采集信号,并显示出来,如果你也发送00的话,跟字符串根本是不一样的,首先要经过变化,因为00对应的ascii码是4848,16进制就是3030所以你发送的字符串在16进制下也应该是3030


在调试的过程中,我们经常会发现有收到的数据延迟的现象,现在提出几点解决的方法:
(1)在循环中加入适量的延时,通过一个简单的例子看,


你会发现在cpu的占用率在加延时和不加的时候有很大的区别,当加的时候基本不占,而不加延时的时候达到100%。我在调试串口通信时候,发现while loop里加一个延时会有很好的效果(假如有一个或某几个线程占用了 100% 的 CPU,此时系统对其他线程就会反应迟钝。例如,程序的执行线程占用了100% 的 CPU,那么用户对界面的操作就会迟迟得不到响应,甚至于用户会误认为程序死锁了。所以在程序中要尽量避免出现 100% 占用 CPU 的情况。 目前大多数的计算机还是单核单个 CPU 的,因此要避免任何一个线程试图 100% 占用 CPU 的情况).
(2)visa read 的字节总数最好用一个属性节点来代替


因为我们不知道数据缓冲区有多少个字节,这样就不需要去设定了
(3)经常看到会有人说串口里面有一堆数据,但是去读的时候却读回来一点点,每次均不相同,这种怀状况是由于串口有一个serial configuration这个节点上面,有一个termination char,大家将它设为F就可以了,因为遇到这个终止符,它就会停止读数,所以读回来的就会少了!

学习一下

很给力啊

学习一下

特来学习

给力  

很好  很强大啊  嘿嘿   谢谢小编啊  

xiexie l e~

学习了

很实用的东西

geili  给力啊

小编太有才了,学习中

学习下

学习下

如何切换串口的发送和接收状态呀?

好好看看那

必须学习了

学习,正好碰到这种问题

好帖子好帖子

顶起顶起

有点帮助

学习一下,谢谢小编啦

好贴好贴

学习了啊,谢谢小编

串口通信搞了一个多星期了,愣是没有研究出个啥~~~~~纠结死我了~~~~

学习

学习了,最近也在用LabVIEW,深有感触!

好东西,学习了

在与单片机通信的时候,假如说跟下位机的协议是发送字符串00,那么开始采集信号,并显示出来,如果你也发送00的话,跟字符串根本是不一样的,首先要经过变化,因为00对应的ascii码是4848,16进制就是3030所以你发送的字符串在16进制下也应该是3030,这个问题怎么处理呢?因为上位机发的是0到F,因此我们不可能在接收后减去0x30(因此A对应的是0x41),求解释怎么处理这个?

好东西

特来学习

比人正在学习串口通信,谢谢啦。

学习了

学习一下

不错,可以学习一下

开始学习labview小编的资料很给力啊

学习

有帮助!

小编,您好,看您经常发帖,小弟有些问题想请教,我也是初涉LabVIEW,最近用VISA做串口通信,需求很简单,就是从下位机读数据显示波形,但是经常会出现数据错误,我都判断不出事什么错误,现象就是一个连续的波形中间会出现一段零值,不知道是从哪来的,但也不是每次都会有这种错误 ,偶尔还是正确的,望指教啊

谢谢小编分享哈

谢谢小编啊

非常感谢小编的分享

不错

谢谢小编

谢了,学习了

学习学习。

谢谢 小编

膜拜中

分析的很好,有教材的气势啊

转播个,明天再看看

有道理

谢谢分享!

学习

不懂!

为何用了属性节点会报错捏。

我也遇到这个情况,现在正在解决,不知道你搞定了没有?

kanxia ba

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top