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中,包括:

labview串口数据解析

2、使用说明

在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。

labview串口数据解析

图1、串口操作数据流图

首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。

labview串口数据解析

图2、初始化串口

如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISAWrite,接收数据使用VISARead。在接收数据之前需要使用VISABytesatSerialPort查询当前串口接收缓冲区中的数据字节数,如果VISARead要读取的字节数大于缓冲区中的数据字节数,VISARead操作将一直等待,直至TImeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。

labview串口数据解析

图3、从串口发送数据

labview串口数据解析

图4、从串口接收数据

在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISASeTI/OBufferSize;而使用VISAFlushI/OBuffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISAClose结束与VISAresourcename指定的串口之间的会话。

labview串口数据解析

  • labview串口数据解析已关闭评论
    A+
发布日期:2019年07月14日  所属分类:工业控制