基于VC++的MPDU封装设计与仿真

2018-07-28 07:21方樱瀚孟祥富
科技资讯 2018年7期
关键词:调用容器函数

方樱瀚 孟祥富

摘 要:为了满足空间任务的发展需求,使航天器上的数据源封装的空间包可以在同一条虚拟信道中高效传输,AOS(Advanced Orbiting Systems,高级在轨系统)中按照多路复用协议对这些空间包进行复合封装,称为MPDU(Multiplexing Protocol Data Unit,多路复用协议数据单元),进一步通过创建统一的信息数据流在一个信道中传输不同的信息,诸如实验报告、遥测、遥控等。本文中应用Visual C++6.0软件进行编程设计,依据AOS中的MPDU格式,对8bit随机信源数据空间包复合封装成MPDU的过程进行了仿真设计和实现。

关键词:AOS MPDU 8bit随机信源

中图分类号:G64 文献标识码:A 文章编号:1672-3791(2018)03 (A)-0000-00

1 MPDU概述

在AOS系统中,空间包需要经过封装,生成MPDU后,在进行后续的处理[1-3]。在本文采用的是8bit信源空间包数据是通过VC++[4]编程随机产生而封装的,MPDU的格式如图1所示,然后按照图1中MPDU的数据单元格式进行封装,在本仿真中MPDU导头被设置全“0”,而MPDU数据域的大小是可变的,被设置为4,表示每个MPDU数据域包含4个空间包,最后再把封装好的MPDU存放于txt文件之中。

2 MPDU封装的设计实现

在本仿真中,4组8bit信源数据借助VC++[5]中的rand()函数随机产生,之后,再利用向量容器封装成空间包,最后按照AOS的MPDU格式进行封装设计。

整体的设计如下:

第一,通过调用rand()函数得到一个零到RAND_MAX之间的伪随机整数,然后对256进行取余操作,其结果刚好是一组8bit信源可以表示的整数,然后,按照空间包数据单元格式封装成空间包,并存放于容器Space_Pool中。

第二,首先,定义容器“deqMPDU8Bit”、“deqMPDUHead”、“deqMPDUWhole”以及关联容器“MPDU_Pool”,其中,容器deqMPDU8Bit用于存储8比特随机信源的空间包数据;容器deqMPDUHead用来存储MPDU的导头信息;容器deqMPDUWhole用来存储单MPDU数据单元;map关联容器MPDU_Pool用来存储所有的MPDU数据单元。

第三,首先,设定MPDU数据单元中包含4个空间包;之后,调用容器插入函数deqMPDU8Bit.insert()把这4个空间包插入到容器deqMPDU8Bit中;之后,调用编写的MPDU.SetHead()函数在容器deqMPDUHead中去设置MPDU导头信息。调用编写的MPDU.SetWhole()函数将容器deqMPDUHead和deqMPDU8Bit中的数据顺序组合在容器deqMPUDWhole之中。此时容器deqMPDUWhole中的数据就构成了一个完整的MPDU数据单元。

第四,调用关联容器插入函数MPDU_Pool.insert()将容器deqMPDUWhole中的MPDU数据插入到map关联容器MPDU_Pool中。

第五,对上述步骤第三至第四步骤设置循环,直到容器Space_Pool中的空间包数据全部被提取完毕。将map关联容器MPDU_Pool中的数据写入到8比特随机信源的MPDU仿真文件中。至此,就完成了8比特随机信源数据的MPDU复用过程。

本方法的优势:MPDU封装的复用效率达到100%,复用效率非常高,并且提高了信道利用率。

3 VC++中MPDU封装的仿真实现

基于上述方法,借助VC++,进行了本次实验,得到的仿真结果如图2,图3所示:

图2是4组8bit随机信源的空间包仿真结果,它以二进制的形式显示在文本文件之中。图3是图2中的4组8bit信源经过复合封装之后生成的MPDU仿真结果,由图3可以看出总共生成了1个完整MPDU,对应图2中的4组8bit随机信源空间包。1个完整的MPDU包含4个空间包和一个MPDU导头。经过验证之后,MPDU的仿真结果符合格式要求且完全正确。

4 结语

通过本文中在VC++软件平台下对8bit随机信源空间包,按照MPDU统一格式的封装设计与仿真之后,AOS的MPDU仿真结果完全符合空间包格式要求,证明我们的设计与仿真是完全正确的,这样的结果达到了提高了信道利用率和复用效率。

参考文献

[1] Tian Ye,Wang Ruonan,Jiang Yueqiu,Ma Yufeng.A novel multiple-channels scheduling algorithm based on timeslot optimization in the advanced orbiting systems[J].Multimedia Tools and Applications,2017,76(3):4523-4551.

[2] 孙辉先,陈晓敏等.CCSDS高级在轨系统及在我国航天器中的应用[J].航天器工程:2003,3:12-18.

[3] 李宁宁,汪路元.AOS标准在海洋动力环境探测卫星中的应用[J].飞行器测控学报:2012.

[4] 肖俊宇,吴为胜.由浅入深学C++[M].北京:電子工业出版社,2011.7.

[5] 孙鑫.VC++深入讲解[M].北京:电子工业出版社,2012.

猜你喜欢
调用容器函数
难以置信的事情
基于Android Broadcast的短信安全监听系统的设计和实现
液体对容器底及容器对桌面的压力和压强
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
取米
无独有偶 曲径通幽
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析