概述
在使用Laview串口接收下位机传送的数据时,接收的数据长度往往不止1一个字节,同时单个字节所能表示的数据范围有限(0~255或-127至127),因此通常会用两个或两个以上的字节表示一个数据。例如23位绝对值编码器返回的位置量就需要3个字节表示。下面便以此为例简述Labiew在接收到多字节数据时如何进行处理。
处理流程
在这里我们设定数据是先接收高位字节数据,后接收低字节数据,则流程如下:
- 接收最高位字节,右移16位;
- 接收中间字节,右移8位;
- 接收最低位字节
- 将1~3步骤中的结果进行或运算,即得到所需数据
C语言实现
c语言实现该功能非常简单,一个语句就能搞定:
data =(byte2<<16)|(byte1<<8)|byte0;
Labview实现
在Labview中,通常是以字符串的形式从下位机接收到数据,因此需要将字符串转成字节数组,然后再进行相应的移位操作,注意在移位前首先得将字节数组转成所需长度数据格式(此处为32位无符号整形),否则移位后仅保留低8位,数据丢失。具体实现如下:
经过以上步骤就能将字符串格式的数据转换为所需数据格式,建议保存为子Vi以便调用。