1 / 6
文档名称:

报文合并函数说明.doc

格式:doc   大小:90KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

报文合并函数说明.doc

上传人:mh900965 2017/12/22 文件大小:90 KB

下载得到文件列表

报文合并函数说明.doc

相关文档

文档介绍

文档介绍:【文件号:】
系统平台数据管理分册
报文合并
函数说明书
VER
项目代码:SimIED
修改历史
No
修改日期
修改人
修改章节
修改内容
备注
1
2008/11/10
王浩儒
初步实现报文合并函数
初稿
审核
批准
设计目的:
在接收到报文时,由于网络原因导致接收方不能按顺序接收发送方发送的报文,因此有
必要对报文根据其报文ID和帧ID进行合并。
设计描述:
具体来说,报文合并主要围绕三个链来展开:
(1)、报文链:具有相同报文ID的报文按照帧ID由小到大的顺序组成一个链表,而该
链表则为时间链上某一个结点的一个分支;
(2)、时间链:具有不同报文ID的时间结点按照其接收报文的时间顺序由早到晚组成一个链表,每接收一个新报文,就会在时间链上查找一次,如果能找到与该报文同报文ID的时间结点,则将该报文添加到该时间结点所对应的报文链中,并将该时间结点移至时间链尾,如果没找到,那么在时间链尾新添加一个时间结点,并将该报文结点作为该时间结点的报文链的链头;
(3)、合并链:设置合并链的目的是跟踪报文合并情况,避免重复合并报文。应该在所允许的最短报文合并时间外合并同一个报文,而如果该报文合并的时间短于这个最短报文合并时间,那么应视为重复报文而舍弃。比如说,最短报文合并时间为30秒,那么先接收一个报文符合条件合并后,在接下来的30秒时间内,是不允许再合并与该报文ID相同的报文的。
关于报文合并的相关思想请参考文档《报文合并机制》;
宏说明:
宏名称意义
MAX_RECEIVE_TIME 接收报文超时时间
MIN_MERGE_TIME 合并报文最短时间
MAX_BUF_LEN 报文数据长度
MAX_ID_NUM 最大接收报文总数
MAX_FRAMEID_NUM 最大合并报文帧数
MAX_MERGE_NUM 最大合并节点数
MAX_TIME_NUM 最大时间结点数
函数说明:
(1)、初始化合并链:
原型:ST_VOID InitMergeList(ST_VOID);
参数:无
返回值:无
说明:在合并报文前先对相应的合并链动态分配数组进行初始化,以便在合并时动态申请或释放合并链结点,在初始化函数中调用一次;
(2)、初始化报文链和时间链:
原型:ST_VOID InitPackageAndTimeList(ST_VOID);
参数:无
返回值:无
说明:初始化报文链和时间链,以便动态分配和释放报文链和时间链的结点,在初始化函数中调用一次;
(3)、动态分配报文链结点:
原型:ST_VOID MallocPackageNode(LPRECEIVE_PACKAGE_NODE *lpAdd);
参数:参数名称参数类型参数意义
lpAdd LPRECEIVE_PACKAGE_NODE * 即将分配报文链结点的指针
返回值:无
说明:在添加新的报文链结点时,利用该函数从报文链动态分配数组中分配一个报文链结点,以便将其添加进时间链结点相应的报文链中;
(4)、动态释放报文链结点:
原型:ST_VOID FreePackageNode(LPRECEIVE_PACKAGE_NODE lpFree);
参数:参数名称参数类型