丁 成,常玉柱,鞠 永,孙贵成
(1. 河北红山巨厚沉积与地震灾害国家野外科学观测研究站, 河北 邢台 055350;2. 河北省地震局, 石家庄 050022)
仪器正常稳定运行是观测资料产出的基础,仪器出现网络故障、供电故障、硬件故障时,如不能及时发现会影响资料的连续性及完整性。为保证仪器能连续正常记录观测数据,许多人尝试开发客户端软件对仪器状态监控[1-3]。
随着丰宁台整体搬迁工作的完成,2020年丰宁台又新增多套仪器,通过网页查看仪器状态不但十分繁琐,且难以确定仪器数据曲线形态是否正常。此外,搬迁后的丰宁地震台办公地点位于县政府大院内,与县政府内其他单位有了更多交流展示的机会,因此还将承担部分宣传展示工作。相对于采用讲解和播放视频的方式进行宣传展示,将台站日常处理的数字资料以数据曲线的形式进行展示,可以让人民群众更直观地了解地震仪器和台站日常工作。在此需求的基础上,使用C++语言,基于Qt 框架开发完成了前兆台站数字化展示软件,实现了台站宣传展示及仪器状态监控功能,该软件通过简单配置即可应用于前兆台站。
前兆台站数字化展示软件主要包含2 个子模块:宣传展示模块和仪器状态监控模块。宣传展示模块下面包含:台站简介、仪器介绍、人才队伍和其他风采4 个部分,通过图片和文字,配合台站职工的讲解,用于向来台人员展示台站的基本情况。仪器状态监控模块主要有仪器网络状态监控和仪器数据曲线显示两大功能,除了方便工作人员日常对仪器进行监控外,也可以向来台参观人员进行展示(图1)。
图1 功能架构图Fig. 1 Functional architecture diagram
软件的使用者主要是来台参观人员和台站工作人员。来台参观人员可以查看用于展示的宣传信息也可以查看台站仪器的状态信息,而台站工作人员除了有来台参观人员的权限外,还负责维护台站用于宣传展示的材料以及台站仪器信息(图2)。
图2 用例图Fig. 2 Use case diagram
前兆台站数字化展示软件将宣传展示模块和仪器状态监控模块用2 个界面分别展示,可通过软件左上角的模式切换功能进行切换。
软件打开后的主界面是宣传展示模块界面,分为台站简介、人才队伍、仪器介绍和其他风采4 个子模块,点击相应子模块进入展示材料界面。为了方便展示材料编辑和呈现,统一采用左侧文字介绍和右侧图片介绍的界面(图3)。台站工作人员可以通过文字和图片向参观人员进行介绍,点击右侧的导航按键,可方便切换展示材料。
图3 宣传展示界面Fig. 3 Publicity and display interface
本文软件采用可编辑模板的方式使宣传展示材料可以自由的增减和替换,满足本台站宣传展示多样性的同时,还可使软件应用于其他前兆台站。在软件所在文件夹中的images 文件夹下存放宣传展示的图片和配置文件(图4),其中文件夹用于存放用于展示的图片,而与之同名的xml 文件中可编写与图片对应的文字介绍。
将想要展示的图片放在相应展示模块的文件夹下,编辑对应的xml 文件即可实现自定义展示材料。
以“其他风采”展示模块为例,4_Others 文件夹下存放的是台站获奖情况的图片。在xml 文件中,intro 为一个宣传展示材料,name 为展示的标题,pic 为展示图片名称,instruction 内容为文字介绍部分。使用人员可通过编辑xml 实现自定义宣传展示内容(图5)。
点击左上角“模式切换”按钮将模式切换到仪器状态监控模块。界面左侧区域为仪器列表区,中间区域为数据曲线显示区,右侧为信息区和控制区。该模块可以供台站工作人员日常检查仪器状态使用,也可以用于向外来参观人员展示仪器数据曲线(图6)。工作人员可以根据仪器列表区的状态判断仪器网络状况是否正常,可以通过控制区选取查看仪器数据的时间范围,可以通过信息区查看仪器在收取数据时的状态,可以在数据曲线区域查看仪器数据曲线。
图6 仪器状态主界面Fig. 6 Main interface of instrument status
2.3.1 仪器网络状态监控
仪器列表不但有显示和选取仪器的作用,还可以用于判断列表内仪器的网络状态。软件会定时自动ping 仪器列表的仪器,如果ping 不通,仪器列表内对应仪器的名称会变为红色;如果可以ping通,则为绿色(图7)。台站人员通过仪器列表可以对仪器网络状态一目了然。
图7 仪器网络状态Fig. 7 Network status of instrument
2.3.2 仪器曲线显示
本功能提供仪器曲线显示功能。点击左侧“仪器列表”中对应的仪器,在软件的右下角有数据日期选择下拉框,可选择最近15 天的仪器数据曲线(图8)。
图8 数据日期选择Fig. 8 Data date selection box
此时点击“全天曲线”按钮,软件会尝试与仪器建立TCP 连接并获取数据,台站人员可通过右侧的信息框查看与仪器的连接情况和数据读取情况(图9)。当仪器获取数据后,会在显示区按照各个测项显示每个测项的数据曲线,可通过鼠标拖动或放大缩小曲线。
图9 仪器数据曲线展示Fig. 9 Instrument data curve display
为了方便软件的推广,使其可应用于其他台站,软件将仪器的IP、ID 等信息存放到instruments.xml 配置文件中,通过修改instruments.xml 中的字段,其他台站也可使用本软件查看仪器状态(图10)。xml 中各字段名称含义如表1 所示。
表1 仪器信息配置文件含义Table 1 Meaning of instrument information configuration file
图10 instrments.xml 内容Fig. 10 The content of instruments.xml
前兆仪器入网需满足“十五”通信规程,与仪器建立TCP 连接后,可按照通讯协议格式发送命令与仪器互动。与仪器进行网络TCP 连接时,需使用Socket 技术。套接字(Socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O 插入到网络中,并与网络中的其他应用程序进行通信。
与仪器通讯的主要代码如下:
QByteArray logByte=m_currentCommand.toUtf8();//将命令转换成byte
tcpClient->connectToHost(m_IP,**);//连接到主机
if (tcpClient->waitForConnected(2000)) { // 连接成功发送命令
tcpClient->write(logByte);}else{ //将命令传入TCP
emit ErrorDetected(m_Name+":连接超时");}//连接失败发出错误信息
仪器数据曲线展示采用QCustomPlot 控件。QCustomPlot 是一个基于Qt 图形库,用于绘制和数据可视化,制作曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。QCustomPlot 使用简单,易于使用,只需要在项目中加入头文件qcustomplot.h 和qcustomplot.cpp 文件,然后将界面中的widget 控件提升为QCustomPlot 类即可使用。
按照软件开发流程开发前兆台站数字化展示软件一套,软件分为展示宣传子模块和仪器状态监控子模块,实现了仪器数据曲线显示、台站概况简介、仪器信息简介等功能。在满足工作人员仪器状态监控的同时,还具有对外展示宣传的作用。软件具有较好的可推广性,通过简单编辑几个配置文件即可应用于其他台站,目前已应用于丰宁台和易县台的日常工作中。