最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于ember+协议的lawo调音台gpio模块开发

IT圈 admin 61浏览 0评论

2024年3月11日发(作者:焦蕴涵)

Advanced Television Engineering

基于EmBER+协议的

LAWO调音台GPIO模块开发

作者

 江苏省苏州广播电视总台 程晨 陈杰 江晓峰

摘要

起一个provider(硬件主机)和consumer(软硬件的

控制端或者监控端)之间的连接

[1]

。基于该协议,

provider和consumer之间可以传递参数,客户端可以

控制主机的参数,也可以监测主机的参数。基于以上

发现,笔者构想了自主开发,与主机建立EmBER+

连接后,获取自定义虚拟GPIO信息,在借助外部硬

件(单片机)的GPO端口输出GPO信号给话筒架

和联汇监测系统。设想的系统架构如图1。

本文介绍了LAWO sapphire调音台在广播直播室使用的

案例,介绍了在调音台没有GPIO模块的前提下,苏州台利

用EmBER+协议,抓取虚拟GPIO数据,自主开发软件并

最后由单片机输出并行GPO信号的案例。案例解决了主播话

筒推子推起后点亮Yellowtec的话筒架红灯的应用,同时

也解决了联汇系统对直播室推子状态检测的应用。

关键词

EmBER+

LAWO

C#

单片机

2020年苏州广电总台开展了广播多媒体直播

室的改造工作,为了调剂资源,合理配置,原来的

DHD52系列调音台被调剂出来,使用我们电视板块

在2016年采购的LAWO Saphire系类调音台(未开封)

作为直播室核心调音台。

新调音台相比原来DHD52系列,有着更多的输

出输出通道、推子面板更美观、“哑音功能”开关更

方便、可调参数更直观、可遥控控制等诸多优势,然而,

当年作为电视块面采购的产品,没有GPIO的需求,

故未购买GPIO模块,但是在广播应用上,有诸如主

播话筒架红灯点亮、播出检测系统检测推子状态等应

用,话筒架红灯和检测系统都是接收GPI触发信号,

新调音台一时难以满足。

在本项目预算不足的情况下,如何降本增效、

无中生有,成为我们的课题,笔者在手册上了解了

EmBER+协议,并分析了可行性后,提出了解决方案。

1

设想的架构图

笔者进一步阅读了EmBER+协议,由于provider

和consumer之间可以互相传递的参数非常多,

各类控制和监测纷繁复杂,笔者并不能完全掌握

EmBER+协议的要义,网络上EmBER+的资料少之

又少,自建consumer的方式遇到了很大阻力,然而

从实际问题出发,以结果为导向,笔者更换思路,笔

者发现LAWO自带的vistool mkII表桥软件,通过配

置,可以和LAWO主机建立EmBER+连接,笔者

通过这两者之间传递虚拟GPIO信息,我方自主开发,

编写类似于wireshark一样的网络抓包软件,通过抓

取的数据包,分析数据,解析出虚拟GPIO信息,再

传递给单片机翻译成并行GPO信息。实际的系统架

构图如图2。

一 整体架构

笔者查阅了LAWO的手册,发现LAWO调音

台主机支持EmBER+协议,通过该协议,可以建立

2

实际架构图

二 基于EmBER+的配置和数据分析

参阅LAWO调音台的技术手册,发现调音台

153

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15320/5/13 下午4:09

PRACTICE CASES

典型体验

主机和LAWO表桥软件Vistool之间,可以建立

EmBER+连接,进行参数的遥控、监控等,在调音

台配置软件Zirkon中的配置如图3,Vistool中配置此

处省略。

分别为给两个点亮话筒架红灯的GPO和四个给联汇

系统,检测推子状态的GPO,将虚拟GPO绑定内部

逻辑GPO。内部逻辑GPO在根目录树的logic下的

global中配置。

3

Zirkon中关于

EmBER+的配置

虚拟GPO的

建立和与逻辑

GPO的绑定

5

至此,Zirkon中配置完成,然后在Vistool中配

根据EmBER+规范,本案调音台作为Provider

使用,依照规范,将调音台配置为Provider并使用端

口号9001。

接着建立EmBER+协议的虚拟GPIO,如图4。

在根目录树EmBER+处鼠标右键,新增虚拟GPIO

模块,取名为“Redlight”,EmBER+逻辑名为

“cc”,如图4中“1”所示;选择模式为“via Local

Provider”即为绑定Provider的虚拟GPIO,如图4中

“2”所示;绑定1号Provider,即图3中的9001端口,

按照EmBER+规范,Provider需要和Consumer对应,

所以在图4的“4”处,设置本案Vistool所在PC的

IP;勾选“5”处的“Provider Monitoring allowed”

后作为Consumer的客户端就能时时监听Provider的

虚拟GPIO的状态,不然只会在它们建立连接的时

候传输一次GPIO状态,之后GPIO状态改变时,

Consumer均无法得到新的状态。

本案的配置完毕,之后使用Wireshark对网络进

Vistool

表桥界面

置EmBER+功能后(此处不再赘述),在表桥界面

中增加6个方块,与虚拟GPO绑定后,来显示6个

虚拟GPO的逻辑值。表桥界面如图6,与EmBER+

传递的虚拟GPO绑定的示意图如图7,可以看到

EmBER+协议传递的目录树(按照EmBER+协议

的规范,传递的均为Node和Parameter的形式,与

6

XML表类似)。

7

EmBER+

目录树

4

EmBER+虚拟

GPIO的建立

行抓包,过滤9001端口数据后,对数据进行分析。

每隔5s会有心跳连接,Consumer向Provider发送

“ALIVE”请求(FE 00 0E 01 01 94 E4 FF),其中,

FE是包头,00是“SLOT号”规定为0,0E代表

EmBER协议,01为“KEEP ALIVE”指令,01为

“Version”,94 E4为两个字节的校验位,FF为包尾;

Provider立即回复“ACK ALIVE”命令(FE 00 0E 02

01 FD DC CE FF),协议含义同上,第4个字节02

如图5,继续在EmBER+虚拟GPIO下,将虚拟

GPIO与LAWO逻辑GPIO做绑定,即当逻辑GPIO

成立时将逻辑值传递给虚拟GPIO,通过EmBER+

协议发送给Consumer。本案创建了6个虚拟GPO,

154

代表“RESPONSE”,EmBER+数据包以S101协议

来封装,S101协议传输的数据帧能保证数据帧中不

会有包头标志(FE)和包尾标志(FF)。依照S101

协议的规范,所有超过0xF8的数,均要先被插入

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15420/5/13 下午4:09

0xFD,然后再与0x20做异或跟在0xFD之后,所以

在“RESPONSE”信息中检验值本来为FC CE,但

是FC大于F8,所以按照规范,变成FD DC CE,从2

个字节的校验值变成3个字节的校验值。

除了心跳数据包,就剩下虚拟GPIO数

据包了,每当GPO的逻辑值改变(TRUE和

FALSE),Provider均会向Consumer发送数据,以图

7“DJ1RL”的数据为例,按照EmBER+规范,数

据都是按Node和Parameter的形式传送的,图8是

“DJ1RL”逻辑传送FALSE时的数据样例。

如图8,参看EmBER+协议,翻译了数据包部

8

“DJ1RL”

逻辑为false

分内容,由于笔者能力所限,未能全部理解数据包的

时的数据包

示例

含义,好在本案中,6个虚拟GPO的12个状态,对

于笔者未能翻译的数据部分都是一样的,所以对于数

据分析应用上并不造成困扰。本案数据分析中关键的

两个字节已用红色突出显示。EmBER+协议规定,

逻辑FALSE用0x00表示,逻辑TRUE用0xFF表示,

由于用S101协议封装,所以逻辑TRUE的0xFF会

被编码成FD DF两个字节。

6个虚拟GPO的TRUE/FALSE,12个状态的

数据类似上例,于是本案只需抓取网络包,按端口

9001过滤后,提取有用数据做好翻译工作即可。

三 基于数据包捕获框架SharpPcap

的监测软件开发

SharpPcap是一个在.net framework环境下,基于

pcap/WinPcap 库开发的网络数据包捕获框架,它提供

了对网络数据包的捕获、分析、注入和构建的功能,

由于它是基于C#语言开发的框架工具,本案涉及的

检测软件也采用了C#语言进行设计和开发。

由于考虑到软件的网络抓包、条件过滤和逻辑判

断这三个主要功能具有数据计算量大、占用系统资源

高的特点,本软件的用户界面采取了较简单的设计,

目的是使该软件占用系统的主要资源最大程度地分配

到这三个主要功能上,从而使软件功能可靠性得到最

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 155

Advanced Television Engineering

大提高,同时软件平时为常开状态,简洁的界面防止

误操作。软件名称为LAWO监测站。

由于当调音台每路推子的状态发生变化后,调音

台主机Provider的9001端口会向监控端consumer发

送TCP数据包,且数据包的校验位字节都具有唯一

性,因此“LAWO监测站”网络抓包后,通过条件过滤,

只对抓到的端口9001的TCP数据包进行分析,根据

数据包检验位的匹配即可逻辑判断出是哪一路的推子

状态发生变化,并将对应的校验位字节翻译成唯一的

字符串指令写入到本机串口连接的单片机,单片机会

根据指令做出逻辑输出。

下面简述网络抓包、条件过滤和逻辑判断三个主

要功能模块的实现原理。

1.网络抓包

首先,系统需要获取当前使用的网卡接口,具

体方法是通过SharpPcap的LibPcapLiveDeviceList类的

Instance属性,可以获取本机一个网络接口列表,列

表中包含了本机中所有的网络接口,可根据需要自主

选择要监听的监听接口dev。

其次,当选定接口后,需要先设定所选择接口的

OnPacketArrival事件,这个事件在数据包被捕获的时

候才会被触发,然后通过注册该事件时调用数据包处

理的方法device_OnPackArrival,数据包处理方法包含

了后面要讲的条件过滤和逻辑判断功能,最后通过调

用接口的OPEN函数来实现打开该接口,以及调用

StartCapture( )开始捕获数据包的数据包捕获模式。

2.条件过滤

在数据包处理的方法device_OnPackArrival的

条件判断语句中,首先通过引用SharpPcap的.NET

框架PacketDotNet的Packet方法的ParsePacket的

属性对抓到的所有包数据进行解析并获取到基本

包,其次通过PacketDotNet的TcpPacket方法的

GetEncapsulated的属性对基本包解析从而获取需要的

TCP包数据,最后,由于分析并得知了捕获的TCP

数据包中存在定义了对方主机发包的端口号的字符串

SourcePort=X,X为整型数,因此在数据包处理函数

device_OnPackArrival中,可以很容易通过增加条件判

断语句来过滤出端口9001的TCP包数据。

155

20/5/13 下午4:09

PRACTICE CASES

典型体验

3.逻辑判断

逻辑判断的主要功能是通过TCP数据包检验位

的具体的匹配值来逻辑判断出是哪一路的推子状态

发生变化,并将翻译码写入单片机,在数据包处理

的方法device_OnPackArrival中是通过一个switch多

分支语句来实现的,主要思路是根据TCP包的校验

位的位置和数据的不同的值来执行对单片机写入不

同的数据。

由于单片机只需接收串口数据,并简单处理后控

制输出引脚电平,本案使用STC89C52单片机即可满

足需求。单片机配置串口及中断代码如下:

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;//设置定时器初始值,从而实现9600波特率

TR1=1;

REN=1;//串口初始化

SM0=0;

四 单片机逻辑翻译的实现

“LAWO监测站”通过计算机COM口(串行

通信端口)将GPO信息发送给单片机,单片机再通

过自身引脚输出TTL电平信号给话筒架和联汇监测

系统。由于单片机与计算机输入输出电平不同,它们

之间需通过电平转换器RS232连接,如图9所示。

SM1=1;

EA=1;//开启总中断

ES=1;//开启串口中断

单片机串口中断处理函数如下:

void ser() interrupt 4

{

RI=0;

9

计算机与单片机

连接示意图

dat=SBUF;//将串口接收到的数据从缓存中提取

ES=0;//关闭串口中断

rec=1;//接收到数据标志位置1

}

上述代码中由大写字母组成的变量代表单片机的

本案中,自定义了一套简单的串口通信协议,设

置串口通信波特率为9600bps,停止位1位,数据位

8位,无校验位。自定义的串口通信协议如表1所示。

接收一个字节数据

二进制表示

00001000

00001001

00001010

00001011

00000000

00000001

00000010

00000011

00000100

00000101

00000110

00000111

十六进制表示

0x08

0x09

0x0A

0x0B

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

P0.0输出低电平(DJ1话筒架灯亮)

P0.0输出高电平(DJ1话筒架灯灭)

P0.1输出低电平(DJ2话筒架灯亮)

P0.1输出高电平(DJ2话筒架灯灭)

P0.2输出低电平(联汇监测第一组推子推起)

P0.2输出高电平(联汇监测第一组推子拉下)

P0.3输出低电平(联汇监测第二组推子推起)

P0.3输出高电平(联汇监测第二组推子拉下)

P0.4输出低电平(联汇监测第三组推子推起)

P0.4输出高电平(联汇监测第三组推子拉下)

P0.5输出低电平(联汇监测第四组推子推起)

P0.5输出高电平(联汇监测第四组推子拉下)

参考文献:

[1] Keuck Marius& Philip Boger. Ember+ Specification [Z],

2017,9.

[2] Quinn Bob&Dave Shute. Windows Sockets Network

Programming [Z],2012,8.

对应操作

寄存器,由小写字母组成的变量是编程过程中自定义

1

的变量。

串口通信协议

五 结论

本案虽然很好地完成了既定任务,解决了开发过

程中的种种问题,但是由于笔者能力有限,未能开发

出直接和调音台建立连接的consumer。本案在网络资

源匮乏,国内几乎没有参考的情况下,用极小的成本

完成了任务,在广电行业预算捉襟见肘的当下,利用

现有设备,合理调配资源,二次开发,降本增效。期

望同行批评指正。

“LAWO监测站“发出的每一个字节的数据代

表一个GPO变化信息,该协议包含6个GPO,每个

GPO两种动作,共12种动作,与串口接收到的12

种数据一一对应。

156

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15620/5/15 下午4:24

2024年3月11日发(作者:焦蕴涵)

Advanced Television Engineering

基于EmBER+协议的

LAWO调音台GPIO模块开发

作者

 江苏省苏州广播电视总台 程晨 陈杰 江晓峰

摘要

起一个provider(硬件主机)和consumer(软硬件的

控制端或者监控端)之间的连接

[1]

。基于该协议,

provider和consumer之间可以传递参数,客户端可以

控制主机的参数,也可以监测主机的参数。基于以上

发现,笔者构想了自主开发,与主机建立EmBER+

连接后,获取自定义虚拟GPIO信息,在借助外部硬

件(单片机)的GPO端口输出GPO信号给话筒架

和联汇监测系统。设想的系统架构如图1。

本文介绍了LAWO sapphire调音台在广播直播室使用的

案例,介绍了在调音台没有GPIO模块的前提下,苏州台利

用EmBER+协议,抓取虚拟GPIO数据,自主开发软件并

最后由单片机输出并行GPO信号的案例。案例解决了主播话

筒推子推起后点亮Yellowtec的话筒架红灯的应用,同时

也解决了联汇系统对直播室推子状态检测的应用。

关键词

EmBER+

LAWO

C#

单片机

2020年苏州广电总台开展了广播多媒体直播

室的改造工作,为了调剂资源,合理配置,原来的

DHD52系列调音台被调剂出来,使用我们电视板块

在2016年采购的LAWO Saphire系类调音台(未开封)

作为直播室核心调音台。

新调音台相比原来DHD52系列,有着更多的输

出输出通道、推子面板更美观、“哑音功能”开关更

方便、可调参数更直观、可遥控控制等诸多优势,然而,

当年作为电视块面采购的产品,没有GPIO的需求,

故未购买GPIO模块,但是在广播应用上,有诸如主

播话筒架红灯点亮、播出检测系统检测推子状态等应

用,话筒架红灯和检测系统都是接收GPI触发信号,

新调音台一时难以满足。

在本项目预算不足的情况下,如何降本增效、

无中生有,成为我们的课题,笔者在手册上了解了

EmBER+协议,并分析了可行性后,提出了解决方案。

1

设想的架构图

笔者进一步阅读了EmBER+协议,由于provider

和consumer之间可以互相传递的参数非常多,

各类控制和监测纷繁复杂,笔者并不能完全掌握

EmBER+协议的要义,网络上EmBER+的资料少之

又少,自建consumer的方式遇到了很大阻力,然而

从实际问题出发,以结果为导向,笔者更换思路,笔

者发现LAWO自带的vistool mkII表桥软件,通过配

置,可以和LAWO主机建立EmBER+连接,笔者

通过这两者之间传递虚拟GPIO信息,我方自主开发,

编写类似于wireshark一样的网络抓包软件,通过抓

取的数据包,分析数据,解析出虚拟GPIO信息,再

传递给单片机翻译成并行GPO信息。实际的系统架

构图如图2。

一 整体架构

笔者查阅了LAWO的手册,发现LAWO调音

台主机支持EmBER+协议,通过该协议,可以建立

2

实际架构图

二 基于EmBER+的配置和数据分析

参阅LAWO调音台的技术手册,发现调音台

153

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15320/5/13 下午4:09

PRACTICE CASES

典型体验

主机和LAWO表桥软件Vistool之间,可以建立

EmBER+连接,进行参数的遥控、监控等,在调音

台配置软件Zirkon中的配置如图3,Vistool中配置此

处省略。

分别为给两个点亮话筒架红灯的GPO和四个给联汇

系统,检测推子状态的GPO,将虚拟GPO绑定内部

逻辑GPO。内部逻辑GPO在根目录树的logic下的

global中配置。

3

Zirkon中关于

EmBER+的配置

虚拟GPO的

建立和与逻辑

GPO的绑定

5

至此,Zirkon中配置完成,然后在Vistool中配

根据EmBER+规范,本案调音台作为Provider

使用,依照规范,将调音台配置为Provider并使用端

口号9001。

接着建立EmBER+协议的虚拟GPIO,如图4。

在根目录树EmBER+处鼠标右键,新增虚拟GPIO

模块,取名为“Redlight”,EmBER+逻辑名为

“cc”,如图4中“1”所示;选择模式为“via Local

Provider”即为绑定Provider的虚拟GPIO,如图4中

“2”所示;绑定1号Provider,即图3中的9001端口,

按照EmBER+规范,Provider需要和Consumer对应,

所以在图4的“4”处,设置本案Vistool所在PC的

IP;勾选“5”处的“Provider Monitoring allowed”

后作为Consumer的客户端就能时时监听Provider的

虚拟GPIO的状态,不然只会在它们建立连接的时

候传输一次GPIO状态,之后GPIO状态改变时,

Consumer均无法得到新的状态。

本案的配置完毕,之后使用Wireshark对网络进

Vistool

表桥界面

置EmBER+功能后(此处不再赘述),在表桥界面

中增加6个方块,与虚拟GPO绑定后,来显示6个

虚拟GPO的逻辑值。表桥界面如图6,与EmBER+

传递的虚拟GPO绑定的示意图如图7,可以看到

EmBER+协议传递的目录树(按照EmBER+协议

的规范,传递的均为Node和Parameter的形式,与

6

XML表类似)。

7

EmBER+

目录树

4

EmBER+虚拟

GPIO的建立

行抓包,过滤9001端口数据后,对数据进行分析。

每隔5s会有心跳连接,Consumer向Provider发送

“ALIVE”请求(FE 00 0E 01 01 94 E4 FF),其中,

FE是包头,00是“SLOT号”规定为0,0E代表

EmBER协议,01为“KEEP ALIVE”指令,01为

“Version”,94 E4为两个字节的校验位,FF为包尾;

Provider立即回复“ACK ALIVE”命令(FE 00 0E 02

01 FD DC CE FF),协议含义同上,第4个字节02

如图5,继续在EmBER+虚拟GPIO下,将虚拟

GPIO与LAWO逻辑GPIO做绑定,即当逻辑GPIO

成立时将逻辑值传递给虚拟GPIO,通过EmBER+

协议发送给Consumer。本案创建了6个虚拟GPO,

154

代表“RESPONSE”,EmBER+数据包以S101协议

来封装,S101协议传输的数据帧能保证数据帧中不

会有包头标志(FE)和包尾标志(FF)。依照S101

协议的规范,所有超过0xF8的数,均要先被插入

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15420/5/13 下午4:09

0xFD,然后再与0x20做异或跟在0xFD之后,所以

在“RESPONSE”信息中检验值本来为FC CE,但

是FC大于F8,所以按照规范,变成FD DC CE,从2

个字节的校验值变成3个字节的校验值。

除了心跳数据包,就剩下虚拟GPIO数

据包了,每当GPO的逻辑值改变(TRUE和

FALSE),Provider均会向Consumer发送数据,以图

7“DJ1RL”的数据为例,按照EmBER+规范,数

据都是按Node和Parameter的形式传送的,图8是

“DJ1RL”逻辑传送FALSE时的数据样例。

如图8,参看EmBER+协议,翻译了数据包部

8

“DJ1RL”

逻辑为false

分内容,由于笔者能力所限,未能全部理解数据包的

时的数据包

示例

含义,好在本案中,6个虚拟GPO的12个状态,对

于笔者未能翻译的数据部分都是一样的,所以对于数

据分析应用上并不造成困扰。本案数据分析中关键的

两个字节已用红色突出显示。EmBER+协议规定,

逻辑FALSE用0x00表示,逻辑TRUE用0xFF表示,

由于用S101协议封装,所以逻辑TRUE的0xFF会

被编码成FD DF两个字节。

6个虚拟GPO的TRUE/FALSE,12个状态的

数据类似上例,于是本案只需抓取网络包,按端口

9001过滤后,提取有用数据做好翻译工作即可。

三 基于数据包捕获框架SharpPcap

的监测软件开发

SharpPcap是一个在.net framework环境下,基于

pcap/WinPcap 库开发的网络数据包捕获框架,它提供

了对网络数据包的捕获、分析、注入和构建的功能,

由于它是基于C#语言开发的框架工具,本案涉及的

检测软件也采用了C#语言进行设计和开发。

由于考虑到软件的网络抓包、条件过滤和逻辑判

断这三个主要功能具有数据计算量大、占用系统资源

高的特点,本软件的用户界面采取了较简单的设计,

目的是使该软件占用系统的主要资源最大程度地分配

到这三个主要功能上,从而使软件功能可靠性得到最

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 155

Advanced Television Engineering

大提高,同时软件平时为常开状态,简洁的界面防止

误操作。软件名称为LAWO监测站。

由于当调音台每路推子的状态发生变化后,调音

台主机Provider的9001端口会向监控端consumer发

送TCP数据包,且数据包的校验位字节都具有唯一

性,因此“LAWO监测站”网络抓包后,通过条件过滤,

只对抓到的端口9001的TCP数据包进行分析,根据

数据包检验位的匹配即可逻辑判断出是哪一路的推子

状态发生变化,并将对应的校验位字节翻译成唯一的

字符串指令写入到本机串口连接的单片机,单片机会

根据指令做出逻辑输出。

下面简述网络抓包、条件过滤和逻辑判断三个主

要功能模块的实现原理。

1.网络抓包

首先,系统需要获取当前使用的网卡接口,具

体方法是通过SharpPcap的LibPcapLiveDeviceList类的

Instance属性,可以获取本机一个网络接口列表,列

表中包含了本机中所有的网络接口,可根据需要自主

选择要监听的监听接口dev。

其次,当选定接口后,需要先设定所选择接口的

OnPacketArrival事件,这个事件在数据包被捕获的时

候才会被触发,然后通过注册该事件时调用数据包处

理的方法device_OnPackArrival,数据包处理方法包含

了后面要讲的条件过滤和逻辑判断功能,最后通过调

用接口的OPEN函数来实现打开该接口,以及调用

StartCapture( )开始捕获数据包的数据包捕获模式。

2.条件过滤

在数据包处理的方法device_OnPackArrival的

条件判断语句中,首先通过引用SharpPcap的.NET

框架PacketDotNet的Packet方法的ParsePacket的

属性对抓到的所有包数据进行解析并获取到基本

包,其次通过PacketDotNet的TcpPacket方法的

GetEncapsulated的属性对基本包解析从而获取需要的

TCP包数据,最后,由于分析并得知了捕获的TCP

数据包中存在定义了对方主机发包的端口号的字符串

SourcePort=X,X为整型数,因此在数据包处理函数

device_OnPackArrival中,可以很容易通过增加条件判

断语句来过滤出端口9001的TCP包数据。

155

20/5/13 下午4:09

PRACTICE CASES

典型体验

3.逻辑判断

逻辑判断的主要功能是通过TCP数据包检验位

的具体的匹配值来逻辑判断出是哪一路的推子状态

发生变化,并将翻译码写入单片机,在数据包处理

的方法device_OnPackArrival中是通过一个switch多

分支语句来实现的,主要思路是根据TCP包的校验

位的位置和数据的不同的值来执行对单片机写入不

同的数据。

由于单片机只需接收串口数据,并简单处理后控

制输出引脚电平,本案使用STC89C52单片机即可满

足需求。单片机配置串口及中断代码如下:

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;//设置定时器初始值,从而实现9600波特率

TR1=1;

REN=1;//串口初始化

SM0=0;

四 单片机逻辑翻译的实现

“LAWO监测站”通过计算机COM口(串行

通信端口)将GPO信息发送给单片机,单片机再通

过自身引脚输出TTL电平信号给话筒架和联汇监测

系统。由于单片机与计算机输入输出电平不同,它们

之间需通过电平转换器RS232连接,如图9所示。

SM1=1;

EA=1;//开启总中断

ES=1;//开启串口中断

单片机串口中断处理函数如下:

void ser() interrupt 4

{

RI=0;

9

计算机与单片机

连接示意图

dat=SBUF;//将串口接收到的数据从缓存中提取

ES=0;//关闭串口中断

rec=1;//接收到数据标志位置1

}

上述代码中由大写字母组成的变量代表单片机的

本案中,自定义了一套简单的串口通信协议,设

置串口通信波特率为9600bps,停止位1位,数据位

8位,无校验位。自定义的串口通信协议如表1所示。

接收一个字节数据

二进制表示

00001000

00001001

00001010

00001011

00000000

00000001

00000010

00000011

00000100

00000101

00000110

00000111

十六进制表示

0x08

0x09

0x0A

0x0B

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

P0.0输出低电平(DJ1话筒架灯亮)

P0.0输出高电平(DJ1话筒架灯灭)

P0.1输出低电平(DJ2话筒架灯亮)

P0.1输出高电平(DJ2话筒架灯灭)

P0.2输出低电平(联汇监测第一组推子推起)

P0.2输出高电平(联汇监测第一组推子拉下)

P0.3输出低电平(联汇监测第二组推子推起)

P0.3输出高电平(联汇监测第二组推子拉下)

P0.4输出低电平(联汇监测第三组推子推起)

P0.4输出高电平(联汇监测第三组推子拉下)

P0.5输出低电平(联汇监测第四组推子推起)

P0.5输出高电平(联汇监测第四组推子拉下)

参考文献:

[1] Keuck Marius& Philip Boger. Ember+ Specification [Z],

2017,9.

[2] Quinn Bob&Dave Shute. Windows Sockets Network

Programming [Z],2012,8.

对应操作

寄存器,由小写字母组成的变量是编程过程中自定义

1

的变量。

串口通信协议

五 结论

本案虽然很好地完成了既定任务,解决了开发过

程中的种种问题,但是由于笔者能力有限,未能开发

出直接和调音台建立连接的consumer。本案在网络资

源匮乏,国内几乎没有参考的情况下,用极小的成本

完成了任务,在广电行业预算捉襟见肘的当下,利用

现有设备,合理调配资源,二次开发,降本增效。期

望同行批评指正。

“LAWO监测站“发出的每一个字节的数据代

表一个GPO变化信息,该协议包含6个GPO,每个

GPO两种动作,共12种动作,与串口接收到的12

种数据一一对应。

156

典型体验_200420_基于EmBER+协议的LAWO调音台GPIO模块开发.indd 15620/5/15 下午4:24

发布评论

评论列表 (0)

  1. 暂无评论