LED安播信息显示系统的设计与实现

2019-06-22 07:00李敏盛
视听 2019年5期
关键词:服务端台站开源

李敏盛

(广西广播电视无线传播枢纽台)

一、引言

本文设计了一个安播信息显示系统,该系统能使各台站与地市分管中心可实时看到安全播出的计时信息和管理中心下发的安播通知;能更好的提高安播信息发布效率与台站值班人员的安全播出意识。

二、方案设计

(一)系统架构

本系统主要分为三部分,服务端、客户端和LED屏系统。

1.服务端:部署在总监控中心的云服务器虚拟出的 Centos 7系统中,服务端应用使用开源的dotnet core跨平台框架,C#语言编写,打包成docker镜像,运行于docker开源容器应用引擎中。服务端数据使用Mysql数据库进行存储。

图1

2.客户端:部署在树莓派raspberry pi 3b+嵌入式系统中,操作系统是树莓派自带的Raspbian系统。客户端应用也采用开源的dotnet core跨平台框架,C#语言编写,打包成支持linux-arm平台的程序,客户端使用SQLite数据库。SQLite是无服务器事务轻量级SQL数据库引擎,其内存占用少、运行可靠型、使用前不需要设置、不依赖其他,非常适合嵌入式系统使用。

3.LED屏:选择了一款可二次开发,且支持TCP/IP通讯的LED屏。屏幕显示三行内容,第一行实时显示当前年月日时分秒,第二行显示台站和分管中心各自的安全播出计时信息,第三行显示管理中心下发安播通知。

图1为系统架构图。

(二)通讯连接流程

1.客户端与服务端的通讯采用开源框架zeroc ice,该框架支持多语言(C++、.NET、Java、Python、Object-C、Ruby、PHP、JavaScript等)之间的PRC高性能互通,支持跨平台调用,该框架还提供了SSL插件,保证网络通讯的安全。本系统使用其SSL插件进行加密通讯,服务端和客户端都需安装安全证书方可相互通讯。两者的互相连接和心跳检测都交由ICE框架处理。

2.客户端与LED屏的通讯:客户端启动时,就会调用LED屏已封装好的通讯模块函数,如果不成功,每隔10秒后,再次进行连接,直到连接成功。后每隔30秒进行心跳检测。

(三)程序设计

1.服务端设计

服务端采用ASP.Net Core来创建,分成两块大功能,一是WEB服务,二是后台侦测处理服务。

WEB服务大致分为3个模块功能:一是台站信息的导入导出;二是重置各台站的安播起始日,也就是安播屏第二行的“自XXXX年XX月XX日”这个日期;三是添加修改通知内容,也就是LED屏的第三行内容。它采用ASP.NET Core Razor Pages来创建页面,Razor 页面是 ASP.NET Core MVC 的一个新特性,它使基于页面的编码方式更简单高效。WEB服务的身份认证使用IdentityServer身份认证服务框架,它是将规范兼容的OpenID Connect和OAuth 2.0端点添加到任意ASP.Net Core应用程序的中间件。为了方便批量的数据导入导出,WEB服务使用了EPPlus开源控件,EPPlus是一个.NET库,使用Office Open XML格式(xlsx)读取和写入Excel文件。EPPlus没有.NET以外的依赖项。

后台侦测服务的主要功能:根据操作者的要求,下发内容指令到相应的客户端,并接收客户端返回的结果,写入数据库中。后台侦测服务在WEB服务启动前,使用BackgroundWorker开辟一个新线程先行启动,该服务会启动ICE通讯框架的服务端,随时接受客户端的连接。然后其服务本身又启动另外一个线程负责每隔10秒访问数据库,检查是否有新内容要下发,当发现有新下发内容时,调用下发模块进行处理。

WEB服务和后台侦测服务都使用开源的NLog日志记录平台,将错误、告警和运行信息统一格式化打印在控制台窗体上,并写入日志记录文件中。

服务端程序将打包成Docker镜像,运行在Docker开源的容器引擎中,Docker容器引擎几乎可以在任意平台上运行,有启动速度快,快速的交付和部署,更高效的虚拟化,更轻松的迁移和扩展等优点,为此服务端的数据库也使用Mysql官方发布的Docker镜像进行快速部署。

2.客户端设计

客户端的主要功能有:一是将现在时间实时发给LED屏第一行显示,二是接收到服务端下发的重置安播时间指令后,跟当前时间进行比较后,计算出结果并组合文字后,发送给LED屏在第二行显示,三是接收到服务端下发的通知指令后,立即发给LED屏显示。LED屏无法同时接收多条指令,但客户端却有三个线程会同时发给LED屏,为了解决这个问题,客户端创建了一个消息队列,要下发给LED屏的指令先送给消息队列,由消息队列根据先进先出的规则,实时发送给LED屏。客户端还有一个功能是将LED屏显示成功与否的结果返回给服务端。客户端的数据库使用SQLite数据库,它非常适用于嵌入式系统使用,用来存储服务端下发的指令,当客户端重启时,优先读取数据中内容进行显示。

客户端的日志系统也是使用NLog日志记录平台,将各种级别信息在控制台窗口显示和保存在文件里。

3.安全证书的制作

在一台装有Python的linux服务器上,通过pip install zeroc-icecertutils命令安装ZeroC存储库的实用程序包,然后下载和运行ZeroC ICE官方的makedemocerts.py脚本,根据安装提示生成服务端证书和客户端证书。

证书生成完成后,分别将服务端证书和客户端证书放入服务端和客户端的根目录下,并按图2在ice配置文件中做好配置。

图2

三、小结

本系统的服务端和客户端都使用.Net Core开源跨平台框架,C#语言编写,并使用Zero ICE开源通讯框架,并启用了SSL,保证服务端和客户端的加密通讯。该系统部署在全区各无线台站和地市分管中心,实现实时显示台站、分管中心各自的安播计时信息和管理中心下发的安播通知,有效提高了职工的安全播出意识。

猜你喜欢
服务端台站开源
中国科学院野外台站档案工作回顾
地震台站基础信息完善及应用分析
一种适用于高铁沿线的多台站快速地震预警方法
铁路无线电干扰监测和台站数据管理系统应用研究
五毛钱能买多少头牛
2019开源杰出贡献奖
新时期《移动Web服务端开发》课程教学改革的研究
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
摸清黑客套路防范木马侵入