该软件需要具有的功能是接收串口传送的数据,将其解算为可识别的十进制
角度信息,并通过三文模型姿态的转变直观的显示其角度变化。根据它的功能,
我们将软件主要分为两个部分,第一个部分用来接收串口传送的数据,并将传送
的十优尔进制的帧转化为三个十进制的角度变化;第二个部分进行三文图像的显
示。
3.2.1 接收程序
该程序用来接收串口的数据,并进行转换。程序打开串口,读取数据之后,
首先要判断读取的数据是否是一条完整的帧,因为有时候串口会丢失数据或者将
一条帧分成几次发送。若是完整,检测帧头与帧尾是否匹配,如果匹配的话再进
行从十优尔进制到十进制的转换。若不完整或不匹配,则继续读取数据,直到读到
完整有效的数据。
3.2.2 三文姿态显示程序
这一部分的功能是把接收程序得到的三个角度信息运用到三文图形的显示
上,使三文图形对应的变换相应的角度,从而可以使用户直观的感受到角度的变
化。
这部分的程序很简单,三文模型图用Pro/E 完成,再加载到 LabVIEW 的程
序当中来。通过3D 图形的函数对图形进行空间姿态的控制。
3.4 各模块的实现 本科毕业设计说明书(论文) 第25 页 共37 页
3.3.1 接收模块的实现
3.3.1.1 打开串口
图 3.1 串口打开代码
如图 3.1所示,首先在 VISA resource name 控件中输入将要使用的串口号,
接着VISA Configure Serial Port 打开之并初始化之前选择的串口,这里由于发送
设备的设置,将波特率设定为 115200,并将串口的名称向后输出。这时要注意,
VISA Configure Serial Port 中有一个端子决定串口设备是否识别结束字符
(termination char) ,即 Enable Termination Char。默认为识别。如果想要其不识
别结束符,则需要添加一个布尔常量,使端子输入为假。由于所读取的是十优尔进
制的数据,可能会出现结束字符 0A,为了避免引起读数错误,需要添加数值为
假的布尔常量。VISA Set I/O Buffer Size 以及 VISA Flush I/O Buffer 分别用于设
置VISA Resource Name 指定的串口输入输出缓冲区的大小以及清空该缓冲区,
为了防止覆盖,根据上位机的内存容量,开辟了大小为40960个字节的缓冲区。
3.3.1.2 串口协议
串口传送的是一个 14 字节的帧,其中包含帧头和帧尾各一个字节,中间的
12个字节为航偏角、俯仰角、横滚角的变化值,每个角度为一个 32 位的单精度
浮点数,各占4个字节,如图 3.2所示。
图 3.2 一个完整帧的结构 本科毕业设计说明书(论文) 第26 页 共37 页
图 3.3 第一次从串口中读取数据的代码
如图 3.3,VISA resource name 与属性节点相连,并选择 Number of Bytes at
Serial Port 这一属性,可以输出串口中的数据大小。通过VISA Read 函数读取串
口中的数据,将属性节点输出的数据大小与 VISA Read 的byte count 端子相连,
使函数读取串口中所有的数据。读到的数据为字符串形式,通过 String To Array
转换成无符号数。用 Insert Into Array将移位寄存器中的数组与读到的信息连成
一个数组。通过Search 1D Array将帧头AA(170)的索引号输出。用串口中的总字
节数减去AA的索引号,得到 AA及AA之后数组的大小。并用这个数除以 14,
即可知该数组包含的总帧数。总帧数乘以 14 是帧里面包含的字节,把这个值赋 MIMU及载体空间姿态演示软件设计+文献综述(12):http://www.youerw.com/jixie/lunwen_4039.html