APP下载

基于Qt的卫星通信上位机软件架构设计

2018-08-24李敬李昕岳

现代计算机 2018年21期
关键词:线程上位视图

李敬,李昕岳

(广州海格通信集团股份有限公司,广州 510663)

0 引言

Qt是桌面、嵌入式和移动的跨平台应用开发框架,支持的平台包括 Linux、Windows、VxWorks、Android等。Qt本身不是一种编程语言,它是一个用C++编程的框架。但它不仅仅只是一个GUI工具包,它提供了在网络、数据库、OpenGL、Web技术、传感器、通信协议、XML和JSON处理、打印、PDF生成等领域的跨平台开发模块[1-2]。Qt5采用新的模块化代码库,使得移植更加简单,只需移植所需模块即可。

上位机和下位机的操作方式为:上位机是指可以直接发出操控指令的计算机或软件,下位机是直接控制设备获取设备状况的计算机或软件。根据上位机界面上的触生成相应命令,此命令传输给下位机后,下位机再把命令翻译成相应时序信号来控制相应设备或机器。下位机不定时地获取设备状态数据,把数据转成数字信号,反馈给相应的上位机。本文讨论的上位机软件运行在PC上,主要功能是实现在PC机上控制卫星通信板卡,对板卡进行配置、状态查询、数据误码等测试。

1 上位机软件模型MVC架构

典型的MVC架构,如图1所示:

图1 MVC组件类型的关系和功能

MVC 的缩写为模型(Model)、视图(View)和控制器(Controller),分别指内部数据、数据表示和输入输出控制部分。

(1)模型(Model)

Model是整个MVC架构的核心,它是与问题相关数据的逻辑抽象,代表对象的内在属性。

Model的作用有:①抽象应用程序,把程序数据的结构和操作进行封装;②对Controller提供对程序功能的访问;③接受View对数据的查询请求;④当数据变化时,通知对此感兴趣的View。

(2)视图(View)

View是Model的外在表现,一个Model可以与一个或多个View对应。View是应用系统跟外界的接口,具有与外界进行交互的功能。

View的作用有:①对数据的表现部分进行抽象;②将数据展现给用户,获得用户输入;③将用户输入转发给Controller;④当接收到来自Model的“数据已更新”通知后,更新显示信息。

(3)控制器(Controller)

Controller是连接Model和View的纽带。

Controller的作用有:①把用户的交互和应用程序语义的映射抽象出来;②将用户输入命令翻译为应用程序可识别的动作,并转发给Model;③根据用户的输入命令和Model对程序动作的输出,选择适当的View来呈现数据。

MVC是模型用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑[3-4]。

Qt上位机的MVC将View与Controller结合在一起,添加了代理Delegate,组成了模型Model(表示数据)、视图View(表示用户界面)、代理Delegate(自定义数据条目item的显示与编辑方式)的模式。

图2中Model与数据(Data)通信,并提供接口,View从Model中获取Data条目索引,Delegate绘制Data条目。整个模型的通信方式为:信号&槽。此模型的工作方式为:Data改变时,Model发出信号给View;用户对界面进行操作时,View发出信号;Delegate发出信号告知Model和View编辑器目前的状态。

2 上位机软件系统架构设计

上位机系统需要满足高吞吐量的数据处理,同时需要适应多个通信体制,将上位机软件的收发数据、业务处理、视图分别单独剥离开来,统一模型、视图和控制器之间的交互接口,屏蔽不同通信体制内部处理的差异[5]。上位机软件系统架构设计如图3所示:

图2 Qt上位机模型与视图结构图

图3 上位机软件架构

不同体制均采用所示软件架构,线程1负责读取接口数据并将数据传递到“读缓存”,线程2负责从“读缓存”读取数据,并分发到各个“数据接收处理模块”,“数据接收处理模”块对相应消息进行响应,并更新“数据库”相应的状态。线程3中的“控制器”负责“视图”选择,将用户动作映射成业务“数据处理模块”状态,并进行更新;“视图”用于人机交互。线程4负责“数据发送处理”,由“控制器”传递过来的指令触发相应数据发送功能,需要发送的数据传递到“数据发送缓存”,并通过“数据库管理”更新“数据库”相应的状态。线程5负责从“数据发送缓存”读取数据并发送到接口。

2.1 上位机软件通信体制加载

对于不同通信体制,线程1和线程5对应的功能和数据结构不存在差异,可单独开发成一个独立的模块,适用于所有体制[6]。

该上位机为了兼容不同通信体制,线程2、线程3、线程4以及数据库针对不同体制需要进行差异化开发。针对不同体制,将线程2、线程3、线程4以及数据库进行单独开发,封装成DLL,在不同体制下进行加载。即在实现过程中整合各项目的上位机构架,把公共功能做成公共界面,特有功能做成风格统一的动态库加载的形式。这样不仅能够大大减少开发人员的工作量,提高工作效率,还能有效地增强程序的可维护性和可移植性,实现多项目资源共享,代码继承。同时统一界面风格,进一步提升用户体验。

2.2 上位机软件模块接口数据格式定义

为了保持各个模块的独立性,减少程序之间的耦合,提高程序的可移植性,降低开发难度,需规定各个核心功能模块之间数据交互格式[7]。定义了两种数据格式,如下所示:

接口交互数据格式1:

2.3 上位机软件收数据处理模块设计

上位机软件收数据处理模块设计如图4所示:

上位机软件接收数据按照功能划分7类,包括物理层接口处收发数据监控、接口性能测试、物理层功能模块监测、网络协议层功能模块监测、接入设备网络状态监控、接入设备参数监控和接收业务数据管理。不同体制均采用同样的功能模块划分,模块对外接口命名、参数类型均统一,屏蔽不同体制造成的内部处理的差异。

图4 上位机软件收数据处理模块

2.4 上位机软件发数据处理模块设计

上位机软件发送数据处理模块设计如图5所示:

图5 上位机软件发数据处理模块

上位机软件发数据处理模块按照功能分为5类,包括误码测试数据发送、单个参数配置/查询、接入设备信道资源配置、单个测试信令发送、业务数据发送。不同体制均采用同样的功能模块划分,模块对外接口命名、参数类型均统一,屏蔽不同体制造成的内部处理的差异。

2.5 上位机数据库设计

上位机数据库包括宏定义、数据结构定义、接入设备参量定义和管理等。数据库分为公共部分和针对不同体制的个性化定义部分。数据库通过统一的接口供所有开发人员调度,屏蔽对数据库参量的直接操作。“数据管理”主要管理接入设备参量和状态,对外提供对相应的更新和读取的接口。

3 结语

目前很多软件项目的功能测试都是通过上位机来配合,上位机作为应用中感知节点信息,进行显示和控制的应用控制台,在项目研发、调试、测试等阶段起着至关重要的作用。所以上位机操作界面的设计、开发、完善的过程都需要进行充分的验证,尤其误码、误帧统计等性能测试时,要求上位机给出实时、准确的显示结果,更需要上位机具备一套合理的架构,能够实现后续功能扩展的要求。

猜你喜欢

线程上位视图
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
特斯拉 风云之老阿姨上位
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于ZigBee和VC上位机的教室智能监测管理系统
Django 框架中通用类视图的用法
基于VC的PLC数据采集管理系统