一种使用Qt的姿态传感器显控设计与实现
作者:王潇 卢如意 李博
来源:《声学与电子工程》2019年第02
        摘要 为缩短软件开发周期,提出了一种在Windows平台下基于Qt图形用户界面设计框架的姿态传感器显控软件设计思路,通过Qt串口控件实现显控终端与姿态传感器的指令传送及信息交互,通过Qt绘图控件实现姿态数据及图线的实时显示,并实现姿态数据的实时存储。该方法具有信息实时显示和程序架构简单的优点,以较小的代码量实现软件全部功能需求。
        关键词 Qt;串口通信;姿态传感器;显控;实时
        姿态传感器显控软件是连接计算机终端与传感器的桥梁,其将控制指令发送给传感器并使计算机终端接收到测量数据,使整个测量系统构成回路。以传统的MFC Microsoft Foundation Classes)方法开发复杂的图形界面,需要程序员编写大量的代码,对控件的实现需要调用底层的作图函数进行绘制,开发时间长。而Qt具有跨平台性能[1],可以一次编写多处编译,具有良好的封装机制、友好的信号一槽连接事件驱动机制,并提供Qt Designer图形界面开发工具[2],可进行拖拽式的界面控件排布,便于程序开发。本文介绍了一种使用Qt的姿态传感器显控软件设计方法,以较小的代码量以及较短的开发周期实现了计算机终端与姿态传感器的控制指令及测量信息的交互,以及测量数据实时显示保存的功能需求。
        1 姿态传感器概述
        本文所使用的姿态传感器通过RS485串口与外部设备通信,可同时上传偏航角、俯仰角、横滚角以及温度数据,将其封装在一个15 Byte数据包中。测量数据通信协议如表1所示。
        若干个姿态传感器由下位单片机串联在RS485通信总线上,共用一个串口与显控终端通信,通过姿态传感器的通信地址寻址通信,即可同时测量一个阵列中各节点处的姿态数据,上传的测量数据即为若干个15 Byte数据包的拼接,非传感器通信地址的命令帧将不予响应。显控软件在打开串口建立串口通信后即发送开始测量指令,串联在一起的若干个传感器即可按照给定的频率上传测量结果数据。显控软件解析数据包,可得到连接的传感器数量并显示测量结果数据与图线。
        2 软件架构
        姿态传感器显控软件根据功能组成划分为串口通信模块、图形显示模块与数据存储模块,如图1所示。
        串口通信模块使控制指令及测量结果根据相关通信协议进行封包或解析[3],并以数据帧的形式进行上传与下发。该模块使用Qt封装的QSeriaIPort串口控伴[4],其提供主要接口函数如表2所示。
        圖形显示模块将从串口获取的测量数据显示在界面中并绘制成图线。该模块使用Qt提供
QGraphicsView控件[5],其依靠QGraphicsView-QGraphicsScene-QGraphicsltem的三级机制绘图:View画板Scene画布Item即为绘制在画布qt进程间通信上的图形。图形显示区域采用QMdiWidget的多子窗口显示机制,由测量数据包解析结果获取传感器数量并生成对应数量的子窗口,可采用平铺(tile)或层叠(cascade)的方式同时显示所有子窗口,或者以选项卡的形式最大化某一子窗口。这部分内容将在第3节介绍。
        数据存储模块将测量数据实时存储到本地的CSV文件中[6]。该模块封装了QtQFile类与QTextStream类,以实现数据文件的存储。
        软件的UML类图如2所示。图形显示模块由PaintArea类构成,其为继承自QGraphicsView的子类,嵌入在MesFigDisArea类中,它的类对象作为后者成员变量,一起构成测量数据及图线的显示控件。DMCCom_Array类为主界面类,其包含了串口通信模块与数据存储模块,由一个QList装入若干MesFigDisArea类对象,可同时显示多个传感器的测量结果。
        软件运行流程如图3所示。在以给定参数配置打开串口之后,与下位机建立通信并发送上数指令,在状态栏显示串口状态。在接收到下位机第一次上传的数据包之后进行解析。首
先,如果数据包长度为单个传感器数据包长度整数倍,则判断为正确数据包,不符合条件的直接剔除。对于正确数据包,遍历数据包的每一个字节寻OxAAOx55的帧头,检测帧头后第4个字节的指令位是否为Ox31的反馈标识判断是否为有效数据包,剔除不符合反馈标识的数据包;对于有效数据包,计算帧头后续第4-13个字节的检验和判断是否为正确数据包。对于每个帧段都满足以卜-条件的正确数据包,根据帧头数量得到下位机所串联的传感器数量,据此初始化出相应数量的子窗口,默认以平铺的方式显示在主界面的多窗口显示区域中,并更新传感器列表及状态栏中的传感器数量。此后,根据通信协议给定的字节顺序以及分辨率解析每个帧段的数据位,得到各项测量数据并在界面中显示、保存。对于下位机后续上传的数据包,同样根据以上方法判断数据包的正确性,剔除错误数据包,解析出正确数据包的测量值,并在界面中更新显示。软件会记录持续测量时间以及测量数据上传次数并在界面中显示。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。