谈播出网络利用串口传输已播出文件

  一 开发背景

  当前,随着电视播控数字化和网络化的发展,多家电视台的电视播控系统采用了网络化的播出结构,但是当该系统需要与外界计算机交换数据时又存在着播出网络中的计算机如何预防病毒的问题,如何实现电视播控中心的播出网络与外界进行安全的数据交换是一个重要的问题。

  唐山电视台采用的是如图1所示结构的网络化自动播出系统,它由主备数据服务器、准备站、主备播出站及网络交换机组成,每一部分各自完成独立的任务,在此不在赘述。

图1 唐山电视台网络化自动播出系统结构图

  在唐山电视台电视播控中心,每天每套的节目播出结束后,当天所有的已播出素材分别在相应的播出站的本地硬盘保存成PARADOX数据表,为使广告管理部门能够对各个频道当天的所有播出广告节目进行内容和时间的统计,需要将各个频道已播出的PARADOX数据表传输给广告管理部门,但是这些已播数据表如何从播出网络传输给广告管理部门的计算机呢?通过软盘等移动存储设备或通过网络传输是我们首先想到的办法,但考虑到网络化自动播出系统要求较高的安全性,同时各种安全隐患中计算机病毒的危害表现最为严重,因为播出网络一旦感染计算机病毒,它将导致整个播出系统无法正常工作、播出数据遭到破坏、网络阻塞等,这对电视台的安全播出来说将是致命的。对网络化播出系统而言,计算机病毒感染的途径主要有两种,一种是通过受感染的软盘或其他存储介质读写感染,这是最古老也是最有效的攻击手段,通过受感染的软盘启动系统引导病毒进入系统引导区或系统分区表,对于存储介质的长期使用不可避免地会带来计算机病毒的感染。另一种的病毒感染途径就是通过网络共享感染,如果靠网络实现资源共享,而受病毒感染的文件共享所造成的恶果是传统的病毒力所不及的,所以我们否决了采用软盘或其他移动存储设备拷贝已播播出表和将广告管理部门的计算机与网络化播出系统联网的方法。

  基于对现有的运行状况的分析,考虑到系统运行的要求,我们提出了基于串口通信传输数据的方案,设计独立的数据传输协议,开发独立的串口数据传输系统,将网络化播出系统的播后信息经过串口线传送到广告管理部门的计算机。由于串口通信传输数据的协议都是特定的,自己根据系统特点设计,不是标准协议,并且串口通讯采用单向传输方式,只能从播出网络向网外传输数据,而网外数据不能向播出网络内部传输数据,而且目前也没有发现基于串口传输的计算机病毒的出现,因此可以很好的保证网络化播出系统的安全。

  二 实现串口传输文件的基本原理

  串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。Delphi语言是新一代可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,用Delphi开发串口通信软件一般有两种方法:一是利用Windows的通信API函数,另一种是采用Microsoft的SPCCOM控件。这里我们采用了通过控件SPCCOM开发了串口传输已播数据表的应用程序。

  * 进行程序设计时首先要设置好控件SPCCOM的各种属性,SPCCOM包括以下属性:CommName是用来填写COM1、COM2…等串口的名字,在打开串口前,必须填写好此值。设定BaudRate波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。字节长度ByteSize可根据实际情况设定5/6/7/8等、Parity为奇偶校验位、PBits为停止位、SendDataEmpty是一个布尔属性,为true时表示发送缓存为空,或者发送队列里没有信息,为False时表示表示发送缓存不为空,或者发送队列里有信息。

  * 开发串口传输应用程序时,应用程序若要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。使用Startcomm过程用于打开串口,当打开失败时通常会报错,错误主要有如下7种:第一,串口已经打开;第二,打开串口错误;第三,文件句柄不是通讯句;第四,不能够安装通讯缓存;第五,不能产生事件;第六,不能产生读进程;第七,不能产生写进程。StopComm过程用于关闭串口,没有返回值。函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用于发送一个字符串到写线程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作随后执行。函数有两个参数,其中 pDatatowrite是要发送的字符串,dwSizeofDatatoWrite 是发送的长度。还有OnReceiveData,当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度。OnReceiveError 是当接受数据时出现错误将触发该事件。

  根据系统的特点,我们设计了应用层的通讯协议,接收数据的一般处理方法,最基本的思路就是通过协议进行分析,所以协议的制定是至关重要的:

  首先要确定指令的起始点,从大量的数据流中将指令分离出来,没有起始标志的话,结果就是一串无效的数据。然后就是指令结束识别点,可以利用指令的长度(如果长度一定或有表示长度的数据)或结束标志来确定,当然还可以利用下一条指令的指令头。头尾都明确之后,还有一种情况就是数据错误是的容错,即发现不符合格式的指令,就将其抛掉或如要求重发。有效数据中如果增加一些冗余校验,传输通讯将会更加可靠。保证每条数据能够准确的识别与传输。

  数据字段包括:类型|播出时间|标识|标题|节目长度|状态|实播时间等,按照上述的数据格式封装,进行数据的传输。系统包括了两个部分,一个是发送端,另一个是接收端,安装时发送端装在源计算机上,接收端安装在目的计算机。其中发送端运行于播出网络中的一台准备站上,主要包括两个主要模块:其一是数据库操作模块。该模块通过播出系统局域网实现对播后数据信息的识别并取出并打包封装;其二是发送模块。将打包封装的数据发送到发送数据缓冲区,发送数据,包括起始位 、数据位 、校验位 、停止位。接收端运行于播出网络外的任一台电脑上,主要实现接收串口缓冲区数据,并根据数据封装协议,拆分数据包,将数据存储在指定类型的数据字段之中,以便广告管理部门人员使用。

  三 实际应用

  目前较为常用的RS232串口有9针串口和25针串口,数据传输速率最大可到20Kbps,通信距离较近小于15m时,可以用电缆线直接连接标准RS232串口,若距离较远,需附加调制解调器。RS232串口最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,同一个串口的接收脚和发送脚直接用线相连,对9针串口和25针串口,均是2与3直接相连,当源计算机端和目标计算机端用RS232串口线连接好后,再分别在播出网络的一台准备站即源计算机端安装软件的发送端,在播出网络外的任意一台计算机上安装软件的接收端,通过点击发送端软件和接收端软件的设置键可以对计算机的串口号进行选择,并且对已播PARADOX数据文件表的存储路径进行相应的设置,如图2所示,然后就可以传输播出站上的播后数据表文件了。在使用该应用软件传输播后数据表时应同时打开接收端和发送端软件,发送端位于播出网络系统中,安装发送端软件的计算机可通过映射网络驱动器的方式连接到各个播出站的存放播后PARADOX数据表的驱动器。在发送端选择要传输的播后数据表文件,并且接收到发送端给接收端的接收请求信号后,就可进行已播播出表文件的传输了,图3显示的是已播数据表文件的传输过程。这样就实现了播后数据表的安全传输,充分保障了网络化播出系统的安全。

图2 文件接收设置

图3 文件接收状态

  总之,基于串口传输已播数据表文件使得唐山电视台在播出网络安全和已播数据共享之间得到了很好得结合,应用一年多来取得了良好的效果,该种文件传输形式也将应用到涉及计算机安全的其他方面。

作者:河北省唐山广播电视局 林耐云 李硕 来源:《现代电视技术》


微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料

本周热点本月热点

 

  最热通信招聘

  最新招聘信息

最新技术文章

最新论坛贴子