图 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 是帧里面包含的字节,把这个值赋