微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 谈播出网络利用串口传输已播出文件

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

时间:06-13 来源:互联网 点击:
 一 开发背景

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

唐山电视台采用的是如图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 是当接受数据时出现错误将触发该事件。

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top