【串口通信】labview实现串口通信

摘要:
Labview已经实现了一段时间的串行通信。它一直在向labview学习。目前已初步实现串行通信。您可以搜索特定地址。visaread功能是从串口读取数据,从串口读取的数据visaread向串口写入数据或命令,并在visaread结束时从串口读取,释放串口资源我的示例前面板图程序图labview也可以调用mscomm控件来实现串口通信。

labview实现串口通信



学习labview有一段时间了,发现了其中功能的强大和编程的简洁性,高效性
现在初步实现了串口的通信,把其中的体会和实现过程写出来,权当抛砖引玉
其中的串口采用的是Rs-232,D型口,共九跟针,其中能用的就是三跟针脚,2,3,5,一个是发送一个是接受,一个是接地,如果做一个串口线延长线的话,只需连接这三根针脚即可,就是2连3,3连2,5连5。
在labview中采用的visa,首先是进行串口设置,设置串口号,波特率,在这里面只要设置这两个就可以了,其余的采用默认,其中特别注意的是要安装visa驱动包,只有安装了这个驱动包,你的串口才可以选择,一般现在的电脑上只有一个串口,那么为了调试方便,这里有两个工具可以推荐,一个叫做串口虚拟软件,我用的是VSPDXP5,就是一个虚拟串口的软件,让你的电脑能够多虚拟两个串口,你要设置成让他们互联,另一个就是串口调试工具,叫sscom32.exe,用来调试串口通信的,可以验证通信时候成功。visa驱动包在ni网站上有,具体什么地址你可以到搜索一下.
再就是visa read作用是从串口读取数据,这里面有个read buffer,从串口读取的数据
visawrite向串口写入数据或者是命令
还有visa close结束串口读取数据,目的是读完数据后,释放串口资源
我的例子
前面板图
labview实现串口通信(一)
程序图
labview实现串口通信(一)


labview也可以调用mscomm控件来实现串口通信,但是编程相对来讲比较复杂,一般不推荐,直接用labview中自带的visa是最方便的,在调试过程中的注意事项,

 

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

 

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

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

labview实现串口通信(二)

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

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

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


在调试的过程中,我们经常会发现有收到的数据延迟的现象,现在提出几点解决的方法:

(1)在循环中加入适量的延时,通过一个简单的例子看,
labview实现串口通信(三)
你会发现在cpu的占用率在加延时和不加的时候有很大的区别,当加的时候基本不占,而不加延时的时候达到100%。我在调试串口通信时候,发现whileloop里加一个延时会有很好的效果(假如有一个或某几个线程占用了 100% 的CPU,此时系统对其他线程就会反应迟钝。例如,程序的执行线程占用了100%的CPU,那么用户对界面的操作就会迟迟得不到响应,甚至于用户会误认为程序死锁了。所以在程序中要尽量避免出现100% 占用 CPU 的情况。 目前大多数的计算机还是单核单个 CPU的,因此要避免任何一个线程试图 100% 占用 CPU 的情况).
(2)visa read的字节总数最好用一个属性节点来代替
labview实现串口通信(三)
因为我们不知道数据缓冲区有多少个字节,这样就不需要去设定了
(3)经常看到会有人说串口里面有一堆数据,但是去读的时候却读回来一点点,每次均不相同,这种怀状况是由于串口有一个serialconfiguration这个节点上面,有一个terminationchar,大家将它设为F就可以了,因为遇到这个终止符,它就会停止读数,所以读回来的就会少了!

免责声明:文章转载自《【串口通信】labview实现串口通信》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇中断处理的全过程python 基础数据类型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue vue-resource 请求数据

<template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> 首页组件 <button @click="getData()">请求数据</button> <hr&g...

彻底理解Android Binder通信架构

copy from : http://gityuan.com/2016/09/04/binder-start-service/ 基于Android 6.0的源码剖析, 本文深度剖析Binder IPC过程, 这绝对是一篇匠心巨作,从Java framework到Native,再到Linux Kernel,带你全程看Binder通信过程. 一. 引言 1.1...

tableau-空间分析(tableau入门day-5)

目录 1.场景一---背景地图添加和使用 2.场景二---双轴图流动地图的使用 场景一 使用场景:与分析相关联的背景地图插入,可与分析信息结合更紧密,方便用户理解,可以是公司内部人员分布,工厂平面图设备位置,及学校教学楼分布等信息,也可是人体图研究容易受伤部位等 知识点① 背景地图的添加 知识点② 页面的使用 知识点③ 高亮笔的用法 背景地图添加 地图...

SQL Server對象的最大容量限制

      SQL Server 数据库引擎对象 最大大小/数量 - SQL Server(32 位) 最大大小/数量 - SQL Server(64 位) 批大小1 65,536 * 网络数据包大小 65,536 * 网络数据包大小 每个短字符串列的字节数 8,000 8,000 每个 GROUP BY、ORDER BY 的字节数 8,0...

游戏服务器端开发的基本大纲

一 专业基础 1.1 网络 1.1.1 理解TCP/IP协议 网络传输模型 滑动窗口技术 建立连接的三次握手与断开连接的四次握手 连接建立与断开过程中的各种状态 TCP/IP协议的传输效率 思考 1)请解释DOS攻击与DRDOS攻击的基本原理 2)一个100Byte数据包,精简到50Byte, 其传输效率提高了50% 3)TIMEWAIT状态怎么解释? 1...

ARM---搭建开发板的开发环境(x210v3s)

以x210v3s为例 开发板介绍: 1、x210v3s,由深圳九鼎创展生产,目前已经停产。 2、CPU由三星公司生产叫S5PV210,目前已经停产。 3、S5PV210采用ARMv7架构CortexTM-A8系列。 4、支持android4.0和android2.3,Qt4.8。 5、启动设置:   拨码开关在下:通过USB口启动,   拨码开关在上:是...