适于多种通信设备的多媒体通信终端软件设计
扫描二维码
随时随地手机看文章
1 概述
应急通信技术是综合利用现有通信方式,实现通信的快速部署,机动反应的通信技术。 它最先应用于军事,在战备行动、野外施工、抢险救灾和应对突发事件上有重大的作用。 随着嵌入式技术和多媒体通信技术的发展,将手持多媒体1通信终端应用于应急通信中,使 得系统更加灵活机动,同时也使得各种信息能在系统中更有效的传递。在应急通信系统中, 通常同时具有多种有线、无线通信方式。各种有线通信方式通常采用TCP/IP 协议,以太网 卡是这类设备的典型。从无线通信方式来说,各类短波电台更适于恶劣通信环境。同时,采 用Ad hoc 方式组网的各种新型网络电台在近年来也得到了广泛的应用,这就要求多媒体通 信终端具备通过多种下层通信设备进行通信的能力。因此,设计一种适用于多种通信设备的 手持多媒体通信终端具有广泛的应用前景。
针对上述三类设备,本文介绍了一种适用于多种通信设备的多媒体通信终端的软件实 现。终端软件采用面向对象的方法设计,对通信模块的接口进行了合理的抽象,将不同的 通信设备封装为统一接口的通信模块。这样,在采用不同的通信设备时,终端只需要选择相 应的通信模块就能进行正常的通信。
2 多媒体通信终端的软件设计
终端的硬件平台采用 Intel 公司生产的嵌入式处理器PXA250 为核心处理器,具有最高400MHz 的处理能力,还支持非常丰富的外围接口,包括USB 的HOST 接口、CF 接口、 串口、以太网等。如图1 所示,终端支持语音、视频、静态图像、短信息、电子白板和文件 传输等多种通信业务。每一种通信业务由一个独立的业务模块完成。业务模块由用户界面控 制,并且向用户界面返回各种控制的反馈信息。业务模块将产生的各种数据包及其目标地址 交给通信模块;通信模块将接收到的数据包和源地址交给对应的业务模块。显然,不同的通 信设备其信道特点是不一样的,需要为不同的通信设备设计相应的通信模块。如果所有的通 信模块具有统一的接口并且对业务模块提供相同性质的服务,那么业务模块将是完全可重用 的。因此,对通信模块接口的合理抽象,将使得软件的结构更加清晰,有利于提高代码的重 用性,从而降低软件设计的复杂度。
在对通信模块的接口进行抽象时,需要遵循两个原则。首先,对于不同的通信设备,都 能利用这个统一的接口进行封装。本终端支持三种通信设备:以太网卡、网络电台和短波电 台。通过以太网进行通信时,终端能够应用操作系统提供的TCP/IP[2]协议栈,采用TCP 和 UDP 方式进行通信。其中,TCP 协议提供可靠的字节流传输服务,而UDP 协议提供不可靠 的数据包传输服务。多媒体通信终端通过USB 接口与网络电台连接,以遥控的方式应用网 络电台上的TCP/IP 协议栈,也可以采用TCP 和UDP 方式进行通信。通常,网络电台之间 通过Ad Hoc 方式进行组网。由于TCP 连接在Ad hoc 网络上具有较低的传输效率,通常只 使用UDP 方式进行数据传输。短波电台通过串口与多媒体通信终端相连,提供具有随机误 码和突发误码的比特链路。参考ITU-T 的H.223[3]协议,利用各种纠错码和检错码,同样可 以在该比特链路上实现一个不可靠的数据包传输服务。
其次,合理界定通信模块和业务模块的职能范围,在保证有效利用信道的前提下,尽可 能提高代码的重用性。对于在通信流程中需要解决的几个问题,需要根据这个原则来进行划 分。第一,由于多种媒体业务可以进行并发的通信,因此需要标识来自不同业务的数据包, 以便接收端辨别数据包的业务类型。采用UDP 方式传输数据包时,业务的标识可以通过为 不同业务选择不同的UDP 端口来实现,也可以通过在数据包中增加标识字节来实现。短波 电台通信时,业务的标识可以在数据复接时实现,以获得更高的通信效率。因此,业务标识 的方法与采用的通信设备是相关的,需要在通信模块中实现。第二,不同业务的数据包在传 输时有不同的质量要求。各种业务的信令都需要实现可靠的传输;静态图像、短信息、电子 白板和文件传输业务的数据包也需要实现可靠传输;语音和视频通信业务可以承受一定数量 的丢包,并且在数据包中可以承担一定程度的误码。因此,数据包的可靠传输应该在业务模 块中通过ARQ[4]方式实现;通信模块根据业务的类型决定是否将具有误码的数据包提交给 业务模块。最后,应该在通信模块中实现对通信资源的优化分配,优先保证实时通信业务所 需的带宽资源。
图1 多媒体通信终端结构图
根据以上分析,通信模块提供不可靠的数据包传输服务,对业务进行标识,根据业务类 型实现通信资源的优化分配,并判决是否将有误码的数据包提交给业务模块;业务模块以ARQ 方式保证数据包的可靠传输。在用C++语言进行程序设计时,可以将抽象的通信模块 接口定义为基类,适用于以太网、网络电台和短波电台的通信模块都是该基类的派生类。下 面分别介绍针对三种通信设备的通信模块设计。
2.1 适用于以太网的通信模块
通过以太网卡进行通信时,可以通过套接字(socket)编程[5]实现UDP 数据包传输。如图 2 所示,通信模块中应用了两个套接字,分别负责发送和接收数据包。通信模块主动从各个 业务模块中读取数据包,并在数据包前添加一个字节的业务标识。为了优先保证语音和视频 通信所需的带宽资源,通信模块优先读取来自语音和视频业务模块的数据包进行发送。添加 了标识的数据包通过发送套接字发送到目标终端。流量控制模块按照预先设定的速率控制每 秒钟发送到以太网上的字节数。UDP 接收套接字在收到数据包时,根据数据包的第一个字 节判断业务类型,并将数据包写入相应业务模块的接收缓冲区。UDP 协议保证了数据包内 不会存在误码,因此在此通信模块中省去了误码判断的功能。适用于以太网的通信模块是最 直观也是结构最简单的一个。
图2 适用于以太网的通信模块2.2 适用于网络电台的通信模块
通过网络电台进行通信时,终端软件通过 USB 连接将数据包交给网络电台,由电台进 行数据传输。图3 描述了适用于网络电台的通信模块的结构。网络电台上运行的服务程序维 护着一个套接字列表,同时多媒体通信终端程序维护了套接字的索引表。终端程序和电台服 务程序根据一个自定义的遥控套接字协议进行通信,保持索引和套接字的一一对应。在需要 进行套接字操作(创建、关闭或者发送数据)时,终端程序通过协议将命令发送电台服务程序; 电台服务程序将命令执行的结果通过协议返回给终端。电台服务程序接收到来自套接字的数 据包时,也通过协议传递给终端程序。于是,终端程序可以构造出虚拟的套接字,使虚拟套 接字的接口与系统提供的套接字一致。这样,只要用虚拟套接字替换图2 所示通信模块中的 套接字,就能实现适用于网络电台的通信模块。
2.3 适用于短波电台的通信模块
短波电台与上述两种通信设备有着极大的差别,因此相应的通信模块也迥然不同。由于短波信道具有较窄的通信带宽,因此终端不支持视频通信业务。为了充分利用短波信道有限 的带宽资源,需要对实时业务和非实时业务进行不同的处理。语音通信业务具有定长的数据 包,并且等间隔时间产生一个数据包;各种非实时业务具有不定长的数据包,并且数据包产 生的时间间隔也不固定。针对信道和业务的特点,通信模块采用了双层复接结构进行数据复 接,为业务模块提供了不可靠的数据包传输服务,同时取得了较高的通信效率和较短的语音 通信延迟。数据复接算法在文[6]中进行了详细的描述,本文只针对通信模块的接口做简单 的介绍。
在发送端,通信模块读取来自各非实时业务的数据包,通过增加分隔字节、业务标识和 CRC 校验字节将数据包复接为比特流。然后,根据语音通信状态和数据比特流的长度,定 长帧复接模块选择出合适的帧模式,并将语音数据包和数据比特流复接到定长帧中。在帧模 式的选择中,将优先保证语音通信所需的带宽资源。最后,将定长帧通过串口发送出去。在 接收端,通信模块读取来自串口的比特流数据,进行帧同步、定长帧解复接和变长帧的解复 接,从而获得各个业务的数据包。然后,通信模块将接收到的所有语音数据包写入语音业务 模块的接收缓冲区;而对于其它非实时通信业务,通信模块只将CRC 校验正确的数据包提 交给相应的业务模块。
图4 适用于短波通信的通信模块
3 结论
实验证明,本文介绍的多媒体通信终端能适用于以太网卡、网络电台和短波电台等多种通信设备,并且具有较高的通信效率和良好的多媒体通信效果。软件结构清晰,具有较强的 可扩展性:可以通过增加业务模块实现通信业务的扩展;也可以通过增加新的通信模块使多媒体通信终端能适用于新的通信设备。