1. 系统结构设计
智慧院落监管系统的实现,是媒体播放、数据推送、数据库、通讯技术、远程控制以及嵌入式等技术的综合运用。该系统利用智能终端将各类媒体信息在社区院落的显示设备上展现(如:电视机),比如播放各种政务信息、在线直播电视节目。智能终端向上通过IP网络与系统相连并实现数据交换,向下与显示终端相连。
系统由三大模块组成,a) 智慧院落监管操作平台:负责与操作员的接口,操作员通过这个平台完成系统配置、播放任务的编排以及终端工作状态监控等。b) 通讯平台:负责与智能终端的通讯,并负责与“监管操作平台”完成数据交互。c) 智能终端,观看电视直播,后台线程实现与“通讯平台”的通讯,实现各类节目无缝切换。为方便社区管理人员远程管理,开发了远程监管移动APP。社区管理人员利用APP,可在手机上查看各院落智能终端的状态以及正在播放的节目等信息。
系统逻辑结构示意如图1所示。
2. 相关技术
系统采用C/S [1] [2] [3] 技术架构。C/S架构优点是系统响应快、用户体验好、能充分利用客户机资源(如打印机、数据缓存)等。利用跨平台开发框架Xamarin.Mobile [4] [5] [6] 开发移动APP。Xamarin Studio是一个用C#语言开发跨平台应用的集成开发环境,它和iOS以及Android SDK紧密整合。采用SQLServer2008R2进行数据管理。为保证数据库服务器和数据库的高可用性和数据的高安全性,部署数据库故障转移集群 [7] [8] [9] [10]。搭建SVN (Subversion,一个自由开源的版本控制系统)服务器进行版本管理,辅助以RDLC、JS框架库等丰富数据呈现效果 [11]。开发环境选择Visual Studio 2012,开发语言为C#。
Figure 1. Schematic diagram of system logic structure
图1. 系统逻辑结构示意图
3. 系统数据库设计
按系统功能需求,共设计了4类表。以下列出系统主要表的详细信息。
1) 系统管理参数类,供系统管理和调度用
系统信息表,表结构如表1所示。
2) 电视直播相关表
a. 智能终端信息表,表结构如表2所示。
索引:mac_addr (唯一), courtyard _id
Table 2. Intelligent terminal information table
表2. 智能终端信息表
b. 直播节目信息表,表结构如表3所示。
索引:name (唯一)
关系:live_program _id ->live_program_addr :live_program _id
Table 3. Live program information table
表3. 直播节目信息表
c. 播放任务清单,表结构如表4所示。
索引:community_id, play_task_timeId
关系:play_list_id->play_plate_list :play_list_id
d. 播放版块列表,表结构如表5所示。
索引:play_ task _id, plate_id
3) 操作员权限相关表
用户账户信息表,表结构如表6所示。
索引:account (唯一)
Table 6. User account information table
表6. 用户账户信息表
4) 文件播放业务的相关表
a. 文件信息表,表结构如表7所示。
索引:name (唯一), sha1, user_id
关系:file_id->plate_file_list: file _id
b. 版块文件列表,表结构如表8所示。
索引:plate_id, file _id
4. 系统功能设计与实现
系统功能设计如图2所示。系统功能主要由文件与板块管理、播放节目编排、系统管理三大模块构成。关键业务涉及文件与版块管理、播放节目控制两部分。
4.1. 文件和板块管理
4.1.1. 数据传输
监管系统将文件(安排播放的图片、音频、视频等)上传至通讯平台服务器,通讯平台接收并保存。通讯平台服务器与智能终端交互,文件下载至智能终端。
智能终端每隔一段时间(数十秒到几分钟)与通讯平台进行“心跳”通讯,“心跳”通讯时“通讯平台”告知智能终端文件有变,需要进行额外的数据通讯,此时智能终端可以发起数据通讯,以完成数据的下载或者更新。图3所示为系统数据通讯示意图。
以下列出部分通讯数据包格式。
1) 心跳数据包(通讯服务器ßà智能终端)
2) 文件上传数据包 (监管系统à通讯服务器)
4.1.2. 主要类描述
文件信息管理类Form_file_info:
显示已有的文件详细信息,包括文件名称、状态、文件大小等,当点击名文件是,通过鼠标右键,可弹出下列菜单:以供用户选择操作,这些操作至少应该包括:新增,修改文件信息,删除文件。在退出本功能时:判断是否有未上传的文件,如果有,则提示是否立即启动文件上传,文件上传由Form_FileToServerMoni类实现。
文件上传监视Form_FileToServerMoni类:
负责显示上传文件的进度以及上传行为的控制(取消上传或者继续上传)。实现文件上传的调度、上传进度的刷新显示、上传过程的控制以及接收来自文件上传类CfileUpToServerMain的消息并进行显示和处理。一旦收到所有文件上传成功完成的消息,则界面上显示全部上传完成。
开始上传时,调用CfileUpToServerMain类,通过传入文件file列表,实现文件的批量上传。在上传过程中,通过消息机制发送每个文件的进度给Form_FileToServerMonis类,或者发送上传过程中的出错消息。
Form_FileToServerMoni、CfileUpToServerMain、CfileUpToServer 3个类之间的关系如图4所示:
Figure 4. The relationship between the three classes
图4. 三个类之间的关系
CfileUpToServerMain类通过多线程机制分别启动单个文件的上传,单个文件的上传由类CfileUpToServer实现。
类CfileUpToServer封装数据包,与下位机进行文件传输,算法如下:
1) 打开要传送的文件。
2) 连接到下位机,发送请求包,接收应答包。
3) 解析应答包:确定开始发送的位置(断点续传)。
4) 定位到要开始发送文件的位置。
5) 读取本次发送的数据长度,发送File_up_data_packetHead包,如收到“准备好”应答,则执行6)。
6) 读文件数据,封装数据并发送,重复6)直到文件数据全部发送完成。
7) 关闭文件。向CfileUpToServerMain发送文件成功传输消息。
在以上步骤中,如出现错误,则中断发送,并向CfileUpToServerMain发送错误消息。
4.2. 播放节目控制
该模块主要功能是完成节目单的编排,在节假日智能终端将不会遵从节目单设定的要求,因此用户在设定的节假日内,智能终端不受节目单的控制。在非节假日,智能终端的工作模式将按照节目单进行。在特定时期,可能需要紧急启动播放某个宣传片,因此通过“应急播放”可以“立即”让智能终端切换到需要播放的宣传片。终端状态的功能是查看所有终端设备的工作状态、正在播放的节目信息等。
主要实现如下功能:
1) 节目编排:显示时段表,以及时段播放的版块;修改或者设置某时段要播放的版块列表;调整版块列表中版块的播放顺序;选择某个时段,显示该时点播放的所有节目顺序。运行界面如图5所示。
2) 假日预约:设定假日时间段,包括假日名称、开始和结束时间。可以设置多个假日时段。
3) 应急播放:设定在进行应急播放时要播放的节目,可以是视频或者图片文件。
4) 查看智能终端状态:显示所有智能终端的信息和当前状态信息。运行效果见图6。
5. 结束语
本文阐述了基于C#的智慧院落监管系统的开发过程,分析了系统中主要实体的属性和相互关系;利用SQL Server 2008 R2设计了数据库;简要阐明了在系统开发中的关键业务、业务实现中设计的关键类及算法流程。系统现已交付使用,在近2年的上线运行中,系统运行正确、稳定,对当地社区文化建设、思想建设及丰富社区群众文化生活起到了较好的促进作用。
NOTES
*通讯作者。