历史上的今天
今天是:2025年03月15日(星期六)
2020年03月15日 | labview串口数据解析
2020-03-15 来源:elecfans
一、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指定的串口之间的会话。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 我看了半天,要我在3天3夜做出来,不可想象。 我都3年研发经验了,而且参加过05年的电子竞赛,是天津市2等奖。 可是,看到现在的题目,我怀疑是大学生能做出来的吗??? 如果真能大学生自己做出 ...… 查看全部问答> |
|
这个世界已经越来越有方向感,一群远见的精英思想正在汇聚成一张清晰的低碳线路图,供人类未来抵达。拯救地球环境,不能或缺中国力量。2009年度,中国光伏正在赶往一条叫做社会责任的低碳大道上。… 查看全部问答> |
|
平台:6410+WINCE6.0 新开一个贴,再讨论一下这个CAMERA应用开发,因为本人一直是做驱动的,现在要写应用,而且是COM接口的directshow,所以有很多东西要向大家请教, 用640X480分辩进行preview 和 拍照都没有问题,但是,我驱动给di ...… 查看全部问答> |
|
在一个线程中定义一个数组, 大小为320*240*8 定义1:U8 cData[320*240*8]; 这个应该存在系统的stack里面,结果data abort失败了,提示就是stack的问题,于是重新 定义2:U8 *cData = new U8[320*240*8] ,这个没有问题 ...… 查看全部问答> |
|
按键控制无线遥控发送是脉冲 现在我想对接收板接收到无线模块发送的信号进行分析 1.如果只是单个脉冲电机就微动一下 2.如果是连续的脉冲,电机就保持转动状态,再发一个脉冲,电机才停止 现在不知道如何判断发送的是单个脉冲还是连续脉冲 请高 ...… 查看全部问答> |
|
我用双路AD同步采集,采集后的数据通过DMA传送的一个32位数组空间内,采集100次,100次后AD采样自动从从数组的开始位置存放。是不数不能实现这个功能啊?我怎么做不出来啊,我的数据只能采集16个,而且数据好像不是按我的要求去转换不同的通道… 查看全部问答> |
|
TI 原厂LM3S8962板上调试部分的 CPLD 起到什么样的作用呢 TI 原厂LM3S8962板上调试部分的 CPLD 起到什么样的作用呢? 设计调试仿真器的时候,是否可以不用它?… 查看全部问答> |




