labview串口数据解析

点击学习>>《龙哥手把手教你学labview视觉设计》视频教程
一、labviewrs232串口通信数据格式问题解析 1)最近在开发一款labview串口通信软件,功能是实现pc与sony摄像机云台的数据通信。主要是通过pc发送16进制指令控制云台的转动,方便做一些测试。
遇到的问题:一开始没注意格式问题,只是纯粹的将16进制数据放入visawrite函数的写入缓冲区。但是忽略了一个问题,就是labview软件中的程序无论是接收还是发送数据都是字符串的格式,所以遇到其他格式通信的时候需要做相关转换操作
如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置visawrite的writebuffer的显示属性为hexdisplay,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。
2)使用labview发送数据
还有一个问题是使用labview发送数据的问题
①如果下位机接收的是字符串数据类型的话,直接用visa写入对应的字符串就行了,现在的仪器一般都是接收字符串的,所以可以直接使用visa发送而不需要转换。
②如果下位机接收的是数值型数据的话,就需要转换一下,其中数值型又是十进制和十六进制二种用得比较多,这二种数据间相互转换一下就行了,其实是一样的。
由于在labview中字符串直接有十六进制的显示方式,所以发送十六进制的数据比较方便,比如要发送十六进制数值类型的“0xaf”,那么在visawrite的写入缓冲区字符串常量上右键》》十六进制显示,直接输入“af”即可,那么下位机接收到的就是正确的数据(十六进制数值类型)了。
二、在labview中使用串口 1、串口vi介绍 labview的串口通讯vi位于instrumenti/oplatte的serial中,包括:
2、使用说明 在labview环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图
首先需要调用visaconfigureserialport完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口
如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用visawrite,接收数据使用visaread。在接收数据之前需要使用visabytesatserialport查询当前串口接收缓冲区中的数据字节数,如果visaread要读取的字节数大于缓冲区中的数据字节数,visaread操作将一直等待,直至timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
图3、从串口发送数据
图4、从串口接收数据
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用visaseti/obuffersize;而使用visaflushi/obuffer则可以清空接收与发送缓冲区。在串口使用结束后,使用visaclose结束与visaresourcename指定的串口之间的会话。
三、注意事项 1、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593mhz或其倍数。
2、由于通常情况下labview串口vi接收或发送的都是字符串(normal),所以如果需要发送或接收十六进制数值(hex),请在发送或接收之前进行必要的转换。
2.1、数值型数据的处理方法: 如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置visawrite的writebuffer的显示属性为hexdisplay,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。
数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给visawrite发送。将这些数据构成一个数组,用bytearraytostring进行转换,转换的结果就是对应数组数值的字符串,可以提交visawrite发送。或者使用typecast也可以实现同样的功能。
图13、串口数据转换界面
图14、串口数据转换数据流图
图15、操作界面
图16、单片机c程序
2.2、字符串型数据的处理方法: 我们在处理过程当中,传输的数据可能具有一定格式或协议,比如一个完整的数据帧包括起始段、数据段、校验段等等,而每一段往往又有几个部分组成,这几个部分的类型和长度可能又不尽相同,可能是数值型的,可能是字符型的,也可能是布尔型的,单字节或者是多字节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是labview里最方便的数据类型。
经过打包的字符数据要经过串口发送需要进行必要的转换,否则传输将出错。比如我们打包过后需要发送的的字符串为:3412567894(空格为了区分),如果直接将其赋给visawrite发送,串口上的数据将是:33343132353637383934。正确的转换程序如下。
图17、字符型数据处理
四、labview与rs232串口通信 选择串行资源并配置参数(波特率、数据位、奇偶、停止位),根据自己电脑的串口选择串口号,这里选择com10,波特率默认9600,其他全部默认即可
读取串口的数据,这里只需要考虑输入输出即可,输入为串口资源,输出为字符串
向串口写数据,跟读取串口类似,这里设置写入内容为hello
关闭串口,每个流程都必须要关闭串口
总的程序框图如下。
这是和串口助手一起调试的效果图

Spartan6的时钟资源使用总结
AI机器人具备的能力有哪些
电动车电池的现状疑难及解决办法
俄罗斯是怎样推进人工智能的发展的
华强北iPhone X提前偷跑,但依然避免不了它的没落
labview串口数据解析
hifi耳机是什么_hifi耳机和普通耳机有什么区别
激光焊接在激光复合焊技术的应用
比特币区块空间的独特价值在于哪些方面
协作机器人备受重大厂商关注 发那科、安川电机正试图迎头赶上
新建一个可以跑rtthread的工程
华为P30系列的芯片级守护
声发射仪的种类
OPPORenoAce高清图集
海思新推出PLC-IoT芯片Hi3921,它的优点有哪些
高低压配电房无源微型无线测温方案
江丰电子:公司超高纯铜及铜锰、铜铝合金靶材在客户端认证顺利
天猫精灵方糖魔岩灰与小爱音箱mini对比 性价比谁会更好
基于SHiELD项目的五代机装备激光武器可行性分析
立式智能有线远传水表的工作原理及设计