赵铭琥
(中国人民解放军71622部队,河南 许昌 461000)
目前,各类文电收发系统广泛的应用于政府及企业,用于传递文电信息,但因无法做到人员全日值守,造成文电信息处理的迟滞,本监控提醒系统能在文电系统接收到文电后,利用GSM的短信业务,以发送提示短信的方式,及时准确的提醒工作人员处理文电,有效的解决了信息处理的迟滞,本系统的应用对全日值守接收文电的岗位有着重大意义。
系统由两部分组成,即运行于计算机终端的文电监控软件和外接于计算机的短信收发模块。文电监控软件有效的检测监控文电系统的文电的接收情况,并向短信收发模块发送控制指令,短信收发模块在收到的控制指令后,对其解析并完成提示短信的发送。下面分别介绍文电监控软件和短信收到模块的设计。
1 文电监控软件的设计
文电监控软件通过监控检测文电系统收到文电后播放的提示音文件的调用情况,来判断文电系统是否收到文电。软件整体分为界面和后台两个部分。界面部分采用传统形式的MFC程序进行开发,后台采用模块的方式进行开发,其结构如图1所示。
界面部分为UI模块,主要负责界面的展示和用户的配置。后台部分主要分为轮训模块、文件检测模块、串口发送模块、Sqlite数据库模块、配置文件模块六个模块。轮询模块主要负责定时发送消息给文件检测模块;文件检测模块主要负责检测文件是否被调用,并调用串口发送模块向短信收发模块发出控制指令。
界面模块:界面部分可以采取QT、MFC以及网页等多种方式进行开发。QT的优势:优秀的跨平台特色,面向对象,丰富的API,并支持2D/3D图形渲染及OpenGL,开发文档丰富,同时还支持XML。
MFC的优势:开发简单,使用方便。网页的优势:跨操作系统,界面美观。因QT和网页开发相对复杂且涉及专业知识较多,根据系统实际需要选用相对简单易用的MFC进行文电监控软件的开发。考虑到后续软件界面切换的需求,将所有后台部分封装在不同的动态库中,界面部分单独制作成一个可执行文件。
轮询模块:轮询模块作为后台部分的重要模块,负责发送定时消息给文件检测模块让其进行文件检测操作。从技术层面有多种方式可供选择,如通过ACE中反应器的定时器,boost的asio库以及MFC的setTimer来实现。对比之下,ACE中的反应器高效,但ACE库太过庞大,而MFC中的setTimer因软件设计考虑,需将界面部分独立出来,为了后续能实现快速与网页或QT的切换,软件采用boost的asio来实现轮询的控制。
文件检测模块:文件检测模块主要负责检测作战值勤系统提示音文件是否被占用。软件采用获取文件句柄的方式来判断提示音文件是否被占用,当提示音文件被占用时,调用fopen是无法得到文件句柄,根据文件句柄是否为空来判断当前要检测的提示音文件的占用情况。
软件将其封装成一个函数,当消息触发时,调用此函数判断结果,从而判断被检测文件的占用情况,并触发串口发送模块发送控制命令。
串口发送模块:串口发送模块是软件和硬件的交互模块,软件采用boost asio的serial port来实现,并将boost asio serial_port度封装成一个类库,使用程序后期的维护和开发。
数据库模块:数据库模块用以存储文电监控软件触发告警信息,软件采用Sqlite的本地存储方式来解决,通过c++库中CppSqlite来操作Sqlite,使用事务的方式提高插入速度,并采用ACE的读写锁来保护数据的安全,防止多线程操作数据库时出现错误。
因SQLite具有跨平台、操作简便等特点,软件数据库模块使用Navicat for SQLite软件,完成数据库的开发。
配置文件模块:Libxml2是C语言下的一个XML的程序库,能够简单方便的对XML文件内容做各类操作,并且支持XPATH查询,为了后续软件的维护和管理便利,选择使用libxml2的库来操作XML,软件将用户配置信息保存在XML文件中,可以在软件启动时自动读取配置信息,免去了重复软件配置的工作。
2 短信收发模块的设计
短信收发模块的功能是实现短信的发送,主要由主控制器C8051F930单片机、SIM900A模块、电平转换电路、AT24C02存储芯片、电源电路等组成。
SIM900A:目前工程上广为应用的短信模块有两种,分别是以SIMCOM公司生产的SIM900A芯片为核心的模块和以西门子公司生产的TC35芯片为核心的模块。对两款芯片配套设计相应的外围电路,即可以实现短信收发功能,使用简单方便,但因TC35芯片的供货量较小,考虑到提示系统后期的推广应用、扩大生产,本系统选用SIM900A芯片。
单片机:模块设计中单片机的选用,降低了PC机直接与短信模块进行通信时上位机软件的开发难度,通过RX、TX引脚可方便实现其与短信模块的通信,利用丰富的应用例程,灵活简便实现了各种控制需求。C8051F930单片机由CPU进行主控,含有24个全双工的I/O口,包含一个扩展的中断系统,支持多个中断源,每个中断源有两个优先级,64Kb的ISP flash用于程序存储,CIP-51 8051控制器核是芯片的核心部件,它控制着指令程序在整个芯片中的良好运行。
串口通信电路:计算机的通信分为两种,一种为并行一种为串行。并行的特点是速度快、效率高,但所用的线数多、可靠距离短,不适合远距离传输的应用。而串行通信只需一根线就能快速稳定的通信,而且成本低,在以单片机作为主控器的控制电路中,因其占用引脚资源少,所以本提示系统的短信收发模块均采用串口异步通讯方式,在满足通信需求的情况下方便配置使用。
为了实现计算机与单片机之间的正常通信,必须将其CMOS电平转换为TTL电平,系统采用MAX3232芯片来完成两种电平之间的转换。
存储电路:本提示系统需要存储值班员手机号码以及相应短信内容,为缓解单片机存储空间的有限,须为系统连接存储设备,这里选用ATMEL公司推出的两线行的控制芯片AT24C02,存储容量为2K,用以满足系统存储需要,实现读写功能。
电源电路:由于整个系统工作电流要求较高,所以采用开关类型的电源芯片进行稳压供电,输入电压DC+为12V,经过稳压后为系统提供输出+5V的稳定电压,再通过稳压电路将5V转成3.3V的系统工作电压,为单片机、SIM900A、EEPROM等电路模块进行供电。
状态指示灯电路:为了系统在后期的使用维护中方便可靠,需要通过一定的标识来判断系统的工作状态,有必要为系统设置指示灯电路,而SIM900A芯片自身提供了指示灯接口,即时显示当前SIM卡的信号状态。电路设计采用灌电流的方式,LED一端接VCC,另一端通过电阻接至芯片引脚完成对单片机和SIM900A两个核心芯片的状态监控。
单片机控制程序设计:当模块开机后,单片机进行初始化控制操作,完成SIM900A、SIM卡、串口等设备的初始化,并等待SIM900A模块进行正常工作状态,当收到SIM900A正常工作的信息后,单片机进入循环扫描状态,即循环扫描触发端口是否有控制命令收到,如果收到触发命令,即控制GSM模块,将预先设定好的短信内容,发送到指定工作人员手机上。
将设计完成的单片机控制程序写单片机,即可以完成整个短信收发模块的设计。
在实际操作应用中,我们通过文电监控软件,设置监控文电系统收到文电后播放的提示音文件,当收到文电后,文电系统调用提示音提示时,文电监控软件即可监控到来电信息,并向预告设置好的手机号码发送提示短信,通知工作人员来处理文电。
[责任编辑:刘展]