1.一种北斗长报文通信方法,发送端将长报文分割成能够用北斗短报文协议发送的多条分包数据,再将分解后的多条分包数据通过北斗短报文协议发送给接收端,其特征在于:所述分包数据包括包头和数据正文两部分,其中包头包含的内容有:
分包标识:用来标识本分包数据为某长报文中的一个分包,不是独立的数据包;
末包标识:用来标识本分包数据是否是长报文的最后一个分包;
分包ID:用来指定本分包数据在原长报文所有分包数据中的唯一ID;
所属长报文ID:标明本分包数据属于哪个长报文;
接收端对收到的分包数据进行缓存,待接收端收到包含有末包标识的分包数据后,根据每个分包数据中的分包ID来确定分包数据的顺序,然后对属于同一个长报文的所有分包数据进行合并;最后根据合并的结果,给发送端返回一条“接收成功”反馈信息或“补包请求”反馈消息,“补包请求”反馈消息包含所属长报文ID、丢失的分包ID;
发送端根据收到的反馈消息,如为“补包请求”反馈消息,则将丢失的相应长报文的相应分包数据重新发送给接收端。
2.根据权利要求1所述的北斗长报文通信方法,其特征在于:接收端根据分包ID和所属长报文ID来判定是否收到重复的分包数据,如果收到了重复的分包数据,则把重复的分包数据丢弃。
3.根据权利要求1所述的北斗长报文通信方法,其特征在于:发送端与接收端在分包数据传输过程中出现丢包情况有五种:第一种,接收端有其它分包数据没有收到,但包含末包标识的分包数据收到,发送端收到接收端发来的“补包请求”反馈消息;
第二种情况:发送给接收端的包含末包标识的分包数据丢失;
第三种情况:接收端所有分包数据全部收到,但接收端发送给发送端的反馈消息丢失,发送端没有收到接收端的反馈消息;
第四种情况:接收端有其它分包数据丢失,但包含末包标识的分包数据收到,接收端给发送端收发送的“补包请求”反馈消息丢失;
第五种情况:发送端发给接收端的补包数据全部丢失,即发送端发送了补包数据,但接收端一个也没收到;
针对上述五种丢包情况,通过如下补包机制进行处理:
针对第一种情况,接收端收到包含末包标识的分包数据后,由此判断发送端针对某一长报文所有的分包数据均发送结束,接收端按照分包合并后的反馈规则,给发送端返回一条反馈消息,反馈消息包含所属长报文ID和丢失的分包ID,发送端收到反馈消息后,根据反馈消息中的所属长报文ID和丢失的分包ID找到该长报文中相应丢失的分包数据,然后再根据反馈消息所在的短报文的发送地址将丢失的分包数据重新发送给接收端;
针对第二种情况,由于接收端没有收到包含末包标识的分包数据,因此无法判断发送端是否发送结束,也就无法启动分包合并操作,因此不会向发送端发送反馈消息,此时,发送端和接收端会进入互相等待的“死锁”状态,即——接收端等待发送端的包含末包标识的分包数据,发送端等待接收端的反馈消息,为避免这种死锁状态,在发送端设置定时器解锁机制,即:设置一个60~70秒的定时器,在一个长报文的所有分包数据发送结束后,启动定时器,如果定时器计时结束还没有收到接收端发来的反馈消息,则认为反馈消息在传输中丢失,此时发送端向接收端补发一次包含末包标识的分包数据,然后重新启动定时器,为避免无限循环,定时器重新启动的次数不超过3次;三次重启的定时器计时结束后还没有收到接收端发来的反馈消息时,释放发送端与接收端之间的链路资源,本次通信失败;
针对第三种情况,发送端针对某一长报文的所有分包数据实际上已经成功传输,但“成功接收”的反馈消息丢失,由于发送端的定时器解锁机制,定时器计时结束后会重发包含末包标识的分包数据,对此,接收端接收到包含末包标识的分包数据后,根据所属长报文ID判定此长报文已接收完毕,则丢弃该分包数据,并发送“成功接收”的反馈消息给发送端;
针对第四种情况:接收端等待发送端的补包,发送端等待接收端的反馈消息,双方会进入互相等待的“死锁”状态,此时同样通过发送端的定时器解锁机制解决;
针对第五种情况:接收端一直等待发送端的补包,发送端等待接收端的再次反馈消息,也会进入“死锁”状态,此时同样通过发送端的定时器解锁机制解决。
4.根据权利要求3所述的北斗长报文通信方法,其特征在于:针对第一种情况,接收端设置有超时机制:反复发送3次“补包请求”反馈消息后仍没有收到相应丢失分包数据,则放弃接收该分包数据。
5.根据权利要求3所述的北斗长报文通信方法,其特征在于:针对第三种情况,接收端记录最后一次成功接收到的分包数据中的所属长报文ID,以此判断当前收到的分包数据是否属于最后一次传输的长报文。
6.根据权利要求1所述的北斗长报文通信方法,其特征在于:发送端向某一接收端发送一长报文时,需要临时建立一条长报文传输链路,不同的发送端能同时与同一个接收端之间建立长报文传输链路,即:同一个接收端能同时接收不同的发送端发来的不同长报文;
同一个发送端也能同时与不同的接收端建立长报文传输链路,即:同一个发送端能同时将不同的长报文发送给不同的接收端。
7.根据权利要求6所述的北斗长报文通信方法,其特征在于:同一个发送端能连续给多个不同接收端发送长报文,即当发送端给第一个接收端的长报文发送完后,不必等待第一个接收端的反馈消息,即可立即给下个接收端发送长报文。
8.根据权利要求6所述的北斗长报文通信方法,其特征在于:发送端和接收端通过通信地址和所属长报文ID来维护长报文通信链路,保证不同链路的数据不会相互混淆,所述通信地址为发送端或接收端的ID。