□黎悦
2017年9月临近党的十九大召开在即,我单位安全播出大排查也积极展开。各项播出项目、安全播出系统、各套应急预案均检查维护并得到落实。最后在与上级安全播出考核机构联系时,发现已使用数年之久的由他们负责配发的“安全播出预警系统”又出了问题,无法正常接收上级发出的信息,同时上电启动后也无法完成初始化连接网络,这种故障已经出现很多次,已经到了必须升级换代的时候了,于是有了本项技改。
正如本文前述,该“安全播出预警系统”设备实际上就是个跑马灯的LED短信接收装置,主要工作过程就是通过一个BenQ移动通信模块接收来自SIM卡的短信息,然后经过编解码在一块32*192的LED显示屏上以跑马灯方式将短信内容逐条显示出来;同时启动蜂鸣器发出报警声音给值机员,值机员在听到声音后用摇控器按击相应数字键确认收到信息,或者查看更多信息完成相关操作即可。不过因为其本身就是一个“兼容机”,内部各部件都是把各种不同厂家的零件组装而成,其性能的稳定性和可靠性均无法保障,加上使用近几年,修修补补好多次,有些关键模块厂家已经淘汰了,原厂产品已无处寻觅,即使找得到也至少是个二手货。与上级播出监控考核部门联系,他们建议升级更换新的系统设备,但新的监控硬件部分都需要近10000元/台,我们目前两个播控机房按照一主一备配制也需要4万元!所以经过请示领导后,由我们自行用功能相近、能够满足需要的替代方案实现更新换代。
图1 :已损坏的短信终端
根据分析我们发现这台短信终端,核心就是一台放大版的短信接收机而已,只要我们找到一台企业级的短信终端编解码器,然后通过二次开发把信息显示在相应输出设备即可。于是我们联系到了厦门某通信设备器材公司,购买了他们生产的一款CM310GSMMODEM,作为我们本次项目的硬件部分,其主要接口性能为:支持IS-95 A/B、GSM2000 1xRTT无线网络800MHz单频;可选450MHz或者800MHz/1900MHz双频,支持数据、短信功能,标准AT命令集;具有标准RS232接口1个,其数率为110-115200bits/s;标准SMA阴头特性阻抗50欧天线接口;3V标准的推杆式UIM卡用户接口。图2为其外型图片。
图 2:CM310 GSM MODEM
硬件部分落实后,就是软件方面了。该MODED可以进行二次开发,只要应用该设备厂家给予的动态链接库及API接口函数,针对性地使用C#、ⅤB、ⅤC和Dehpi等开发工具进行系统研发即可。考虑应用需求、开发时间及厂家提供的接口代码数据详略情况等原因,我们选择C#作为我们该项目的开发工具。图3为我们最终软件界面。
图3 :安全播出预警系统
从这个界面来看,主要分为三大功能区:设置区、状态显示区、接收区。根据不同的区域结合相应的API函数来实现其不同功能。
(一)设置区:主要启动函数int SMSStartServioe。它的功能是打开串口启动服务初始化MODEM,这里的串口是指与计算机通过RS232连接的通讯接口。由于计算机可以有多个虚拟串口号,所以在此需要确定接口,对应的有几个参数nPort代表串口号(如:Com1),一般情况下选择Com1;波特率是本终端与计算机连接的重要参数。BaudRete则为波特率(默认值:57600);短信中心号码csca,这个号码非常重要,填错将导致无法收发短信,这里的号码是由SIM卡通讯公司决定的(例如中国移动广西短信中心号码为:+8613800771500),该号码是在程序中自行设置好的;还有Parity检验位、DataBits数据位、FlowContol流控制位及StopBits停止位。该函数返回值成功为非0,失败为0。
(二)状态显示区:主要是确认软硬件通信状态、MO-DEM工作状态、监控API控件在系统加载和部署状态,如果终端与计算机连接错误会在这里显示“连接失败”,而终端工作不正常也会在此处显示“工作异常”的警告。另外,在右上角的“收到信息”按钮是让值班员在看到信息后点击确认,然后自动关闭信息报警音。此处是通过函数bool SMSSeviseStarted()检测服务是否启动,成功返回true,失败返回flase;而按钮功能是用C#中添加中止事件实现关闭告警音。
(三)接收区:该区域显示接收到的短信时间、发送号码、短信内容。主要是通过短信接收函数int SMSGet-NextMessage(SMSMessageStruct*Msg)对数据进行二次解析,其中它的数据结构体typedef struct_sms_msg_t_{char Msg[256];//短信内容char PhoneNo[32];//对方手机号码char ReceTime[32];//接收时间}SMSMessageStruct,对这几个变量进行再利用,因为上级部门发布的信息有特殊识别码,所以为了只显示上级信息在这里进行了过滤,同时也加入了我们部门内部通知功能,也对这个信息进行了自动识别显示,如果是上级部门则在短信之前加入“区监测中心”;如果是我部门则显示“播控部”字样。手机号码这个参数也是识别上级和内部的条件之一,在程序内部设置好相关号码,如果不是这些号码发过来的信息将自动存储于外部文本文件中,以备后查。接收时间则是以短信中心发送到终端收到信息时间为准,因为短信有字符长短要求,如果上级发出的信息过长则会分几条收到,因为“堆栈效应”,先收到的文字应该是信息尾部,所以需要通过接收时间进一步对消息进行智能重组,以便值班员能够准确理解信息内容。
通过C#编译后生成了整个软件系统安装包,在机房相关计算机进行部署时也出现了不少问题。其中因为我们使用的是C#2014版本进行的编译,需要.NET Framework 4.0,而Winxp的客户端只是2.0,于是进行了升级,可是升到了4.0有些其他系统软件又不可用了,后来我们了解到其实安装2.0相关补丁就可以完美兼容我们的系统。
该项目从功能分析、制定方案、项目实施、部署仅用一个月时间。在2017年9月底分别在我台广播、电视播控机房进行安装使用,使用五个月以来运行一切正常,未见有掉线丢包等故障出现,信息显示也没有错、漏、乱码出现;将该Modem电源接入UPS不间断供电系统中可以保证24小时工作正常。该项目投资小、功能全、维护易,满足了安全播出预警系统的升级要求,同时顺利完成了2017年国庆节和党的十九大期间的安全播出任务。
参考文献:
1.徐凤琴.基于SMCP的无线电监测短信操控系统的设计与实现[D].西华大学,2015.