一种基于北斗卫星的可靠远程通信方法及其通信装置
技术领域
本发明涉及远程通信领域,尤其涉及一种基于北斗卫星的可靠远程通信方法及其通信装置。
背景技术
近年来,自然灾害的频繁发生导致通信设备瘫痪通信链路中断,对经济造成了不可估量的损失;而偏远地区存在的通信盲区对于监控管理也带来了极大的不便。构建无盲区可靠通信链路对减轻灾害造成的损失及监控管理有着重大的意义,已成为当前研究的重要课题。
目前常用的应急手段有:无线集群通信,地面微波通信,无线电台通信以及北斗通信。然而现有的远程通信方式都各自存在着不足:无线集群通信覆盖范围较小;微波传输相邻站间必须直视,不能有障碍物,有时会因多径效应产生失真;无线电台通信传输质量不稳定,信号易受干扰或易被截获,保密性差。相比而言,卫星通信具有链路误码率低、无通信盲区等优点,基于北斗短报文服务的卫星通信技术已经广泛应用于地震救灾中,因而利用北斗短报文通信构建远程通信系统具有极大的实际意义。
然而北斗短报文通信依然存在着一些问题:
1、北斗通信具有不可靠性,通信时没有通信回执,即在通信过程中,北斗用户发送方不知道接收方是否开机在线以及是否接收到数据;
2、北斗通信无错误校验机制,北斗接收方无法判断接收到的信息是否产生失真;
3、北斗民用协议每60秒发送一次,且最大发送数据长度为75字节,资源十分有限,若用户发送信息过长则接收时信息不完全易丢失,若用户发送信息过短则未填满数据长度进行发送造成字节浪费;
4、北斗只支持端到端的数据传输,数据交互范围局限。
发明内容
本发明提供了一种基于北斗卫星的可靠远程通信方法及其通信装置,本发明突破了北斗通信现存限制,建立可靠稳健的远程通信链路,并组建支持多用户的远程通信传输网络,可实现两个局域网内多个用户终端基于北斗卫星可靠有效的数据交互,详见下文描述:
一种基于北斗卫星的可靠远程通信方法,所述可靠远程通信方法包括以下步骤:
依据TCP/IP协议与北斗通信协议,定制远程通信协议;
通过分包粘包策略、丢包反馈机制以及差错校验策略建立有效传输机制;
通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理。
其中,所述依据TCP/IP协议与北斗通信协议,定制远程通信协议具体为:
将电文内容第1字节作为标志位,将第2字节用作长度位,最后两个字节用作检验位。
进一步地,所述第1字节标志位中的0-2比特用作段序列号;第3比特用作反馈标识;第4比特用作末位标识;第5-7比特表示数据序列号。
其中,所述分包策略具体为:
北斗通信机为用户终端数据分配数据序列号,若用户终端数据大于最大数据净荷长度,以所述最大数据净荷长度进行分段,依次分配段序列号,所述段序列号标识每段数据在用户终端数据中的位置;
北斗通信机在接收到被拆分的数据后,对数据进行重组。
其中,所述北斗通信机在接收到被拆分的数据后,对数据进行重组的步骤具体为:
记录数据的段序列号及数据序列号,将数据净荷写入终端缓冲区;
接收下一段数据单元,比对数据序列号,若相同,比对段序列号,确认为应接收的数据单元时,将数据净荷写入终端缓冲区;
直至接收到最后一段数据单元,重组完成,解析终端缓冲区数据,发给相应的用户终端。
其中,所述粘包策略具体为:
从发送缓冲区读指针开始,读取指针所指数据单元的长度位,若数据单元长度小于75字节,写入发送数组;
读发送缓冲区下一数据单元,直至数据长度和大于75字节,停止读取,对发送数组中的数据打包发送;
接收到数据后,去除包头包尾,将电文内容中的数据写入接收缓冲区,按照长度位读取相应长度数据,提取数据单元,进行解析,发往相应用户终端。
其中,所述丢包反馈机制具体为:
发送报文后,将标志位写入共享内存的确认标志位中,若发送报文内数据为粘包数据,则记录最后一个合并单元的标志位;
检查每一接收数据包的电文内容第一字节是否为反馈标志位,若为反馈标志位,将反馈标志位第3比特置为0,写入共享内存中的接收反馈标志位;
对比共享内存的确认标志位与接收反馈标志位,若相同,数据发送成功,删除发送缓冲区中发送成功的数据单元;若不同,对比接收反馈标志位与发送数组中的每个单元的标志位,若与其中之一相同,数据发送部分成功,删除发送缓冲区中发送成功的数据单元,将发送缓冲区读指针指向出现误码的数据单元;
接收数据后,提取数据单元,若数据单元正确,将标志位的第3比特置为1,写入共享内存中的发送反馈标志位,读取下一单元;
若错误,直接丢弃后续单元的数据,发送反馈标志位中记录的是接收到的最后一单元正确数据的标志位。
其中,所述差错校验策略具体为:
对每一段数据净荷采用循环校验码进行计算,得出两位校验位,写入每段数据净荷之后的两字节,将单元数据写入发送缓冲区;
接收到数据后,提取数据单元,对数据净荷进行校验计算,得出两位检验码,对比数据净荷之后的检验位以进行差错检验。
进一步地,所述通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理具体为:
第一子线程,用于与用户终端进行数据交互,采用I/O复用技术,依靠选择机制实时监听套接字请求,维持北斗通信机与多个用户终端的连接;
第二子线程,用于实时监听相应北斗通信机的串口,实时接收数据,串口接收数据后,进行数据包的检测与解析;
第三子线程,用于定时发送数据。
一种基于北斗卫星的可靠远程通信装置,所述可靠远程通信装置包括:
定制控制器,用于依据TCP/IP协议与北斗通信协议,定制远程通信协议;
传输控制器,用于通过分包粘包策略、丢包反馈机制以及差错校验策略建立有效传输机制;
管理控制器,用于通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理。
本发明提供的技术方案的有益效果是:本发明基于北斗短报文通信提出了一种支持多用户终端的可靠远程通信方法,并基于嵌入式技术进行基础硬件的裁减定制,提供了相应的北斗通信装置。通过建立丢包反馈机制和错误校验机制以提高北斗通信的可靠性;通过采用分包粘包策略以提高其通信效率,从而构建了点对点可靠稳健无盲区的通信链路;并通过北斗通信网与局域网的融合来实现用户终端与北斗通信装置的信息交互,进而组建支持多用户终端的远程数据传输网络。
附图说明
图1为通信网络模型示意图;
图2为北斗通信机硬件设计示意图;
图3为北斗短报文通信协议示意图;
图4为信息内容结构示意图;
图5为扩展通信协议示意图;
图6为北斗通信机功能模块示意图;
图7为北斗通信机与用户终端交互软件流程示意图;
图8为北斗通信机接收管理软件流程图;
图9为北斗通信机发送管理软件流程图;
图10为北斗通信机通信流程图;
图11为用户终端软件界面示意图;
图12为可靠远程通信装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。
针对上述北斗通信现存问题,本发明提出了相应的解决方法,并依据嵌入式技术提供了一种北斗通信装置以实现可靠稳健的远程通信。该方法及设备独立于外界环境,可应用于偏远地区无网络覆盖区域或作为自然灾害中应急通信装置使用,首先,构建合理的通信链路,并设计出一套与之相适应的通信协议。通信协议需具有可靠稳健可扩展性特点,能及时适应局域网内终端用户的变化;然后,制定卫星通信设备间高效的数据收发管理策略,最终完成信息在各个用户终端间的交互;最后,为增强系统的用户友好性,采用用户反馈机制使用户实时了解当前信息发送状态。下面结合附图对本发明进行详细的描述:
实施例1
一种基于北斗卫星的可靠远程通信方法,该可靠远程通信方法包括以下步骤:
101:依据TCP/IP协议与北斗通信协议,定制远程通信协议;
102:通过分包粘包策略、丢包反馈机制以及差错校验策略建立有效传输机制;
103:通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理。
其中,步骤101中的依据TCP/IP协议与北斗通信协议,定制远程通信协议具体为:
将电文内容的第1字节作为标志位,将第2字节用作长度位,电文内容最后两个字节用作检验位。
进一步地,第1字节标志位中的0-2比特用作段序列号;第3比特用作反馈标识;第4比特用作末位标识;第5-7比特表示数据序列号。
其中,步骤102中的分包策略具体为:
北斗通信机为用户终端数据分配数据序列号,若用户终端数据大于最大数据净荷长度,以所述最大数据净荷长度进行分段,依次分配段序列号,所述段序列号标识每段数据在用户终端数据中的位置;
北斗通信机在接收到被拆分的数据后,对数据进行重组,该步骤具体为:
记录数据的段序列号及数据序列号,将数据净荷写入终端缓冲区;
接收下一段数据单元,比对数据序列号,若相同,比对段序列号,确认为应接收的数据单元时,将数据净荷写入终端缓冲区;
直至接收到最后一段数据单元,重组完成,解析终端缓冲区数据,发给相应的用户终端。
其中,步骤102中的粘包策略具体为:
从发送缓冲区读指针开始,读取指针所指数据单元的长度位,若数据单元长度小于75字节,写入发送数组;
读发送缓冲区下一数据单元,直至数据长度和大于75字节,停止读取,对发送数组中的数据打包发送;
接收到数据后,去除包头包尾,将电文内容中的数据写入接收缓冲区,按照长度位读取相应长度数据,提取数据单元,进行解析,发往相应用户终端。
其中,步骤102中的丢包反馈机制具体为:
发送报文后,将标志位写入共享内存的确认标志位中,若发送报文内数据为粘包数据,则记录最后一个合并单元的标志位;
检查每一接收数据包的电文内容第一字节是否为反馈标志位,若为反馈标志位,将其第3比特置为0,写入共享内存中的接收反馈标志位;
对比共享内存的确认标志位与接收反馈标志位,若相同,数据发送成功,删除发送缓冲区中发送成功的数据单元;若不同,对比接收反馈标志位与发送数组中的每个单元的标志位,若与其中之一相同,数据发送部分成功,删除发送缓冲区中发送成功的数据单元,将发送缓冲区读指针指向出现误码的数据单元;
接收数据后,提取数据单元,若数据单元正确,将标志位的第3比特置为1,写入共享内存中的发送反馈标志位,读取下一单元;
若错误,直接丢弃后续单元的数据,发送反馈标志位中记录的是接收到的最后一正确数据单元的标志位。
其中,步骤102中的差错校验策略具体为:
对每一段数据净荷采用循环校验码进行计算,得出两位校验位,写入每段数据净荷之后的两字节,将单元数据写入发送缓冲区;
接收到数据后,提取数据单元,对数据净荷进行校验计算,得出两位检验码,对比数据净荷之后的检验位以进行差错检验。
其中,步骤103中的通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理具体为:
第一子线程,用于与用户终端进行数据交互,采用I/O复用技术,依靠选择机制实时监听套接字请求,维持北斗通信机与多个用户终端的连接;
第二子线程,用于实时监听相应北斗通信机的串口,实时接收数据,串口接收数据后,进行数据包的检测与解析;
第三子线程,用于定时发送数据。
通过上述步骤101-步骤103,本发明突破了北斗通信现存限制,建立可靠稳健的远程通信链路,并组建支持多用户的远程通信传输网络,可实现两个局域网内多个用户终端基于北斗卫星可靠有效的数据交互。
实施例2
下面结合具体的操作步骤、例子、附图对实施例1中的方案进行详细描述:
201:构建通信网络模型;
参见图1,该通信网络模型包括:至少一对北斗通信机,北斗通信机通过交换机连接用户终端;北斗通信机与用户终端处于同一局域网内,北斗通信机作为通信中介,进行数据的转发。通信过程中,北斗通信机与用户终端通过TCP/IP协议进行数据交互,北斗通信机间通过北斗卫星进行数据传递。用户终端均需与北斗通信机进行连接后才能进行数据通信。
202:北斗通信机硬件设计;
参见图2,该北斗通信机硬件包括:北斗通信机集成工控板、卫星通信板及卫星通信天线,北斗通信机集成工控板向外提供一路RJ45高性能以太网口,用于与用户终端进行数据交互。北斗通信机旨在为北斗通信网与因特网的融合提供硬件支持。
203:依据TCP/IP协议与北斗通信协议,定制远程通信协议;
为提高北斗通信的可靠性及传输效率,本发明在原有北斗通信协议的基础上,对卫星短报文通信协议中的电文内容字段进行结构扩充,从而实现性能的提高。原有卫星短报文通信协议如图3所示,字段含义如下。
指令:发送指令的类型,占用五个字节,远距离数据传输均为通讯指令,指令值固定为24 4D 73 67 5F。
长度:指令长度,为北斗短消息报文的总长度,占用两个字节。
用户地址:发送端的地址,占用三个字节。
信息内容:通讯指令中,可分为四部分,如图4所示。
接收方地址:占用三个字节。
1)信息类别:编码方式,占用一个字节。例如0x44为包含汉字的Unicode编码,0x46为ANSI编码。
2)电文长度:发送电文的长度,占用两个字节。
3)电文内容:一般的民用协议电文长度最多为600位,即75字节。
为完善北斗通信性能,本发明实施例对此字段进行结构扩充,电文内容具体结构如图5所示,字节含义如下。
将第1字节作为标志位。以太网标准MTU(最大传输单元)为1500字节,减去IP包头及TCP包头,数据净荷为1460字节,而卫星最大传输数据长度为75字节,若一个MTU内的数据净荷进行传输需分为20个卫星报文进行传输,即使每次均成功也需等待20分钟,因而建议用户一次传输数据净荷(本发明实施例中所述数据净荷均不包含标志位,长度位及校验位)长度控制在270字节内。
其中,标志位内,0-2比特用作段序列号,表示报文的数据净荷在总数据内的位置;第3比特用作反馈标识,若为0表示标志位不是反馈标志位,若为1表示标志位是反馈标志位;第4比特用作末位标识,若为0表示报文的数据净荷不是最后一段,若为1表示报文的数据净荷是最后一段;第5-7比特表示数据序列号,北斗通信机接收到用户终端发来的一段数据后,对该段数据进行编号,用以拆分数据段后的重组。
将第2字节用作长度位,即用来标识数据净荷的长度,用于接收短报文后分离数据段以及CRC(循环冗余)检验。
将电文内容最后两个字节用作检验位,以保证数据净荷的保真传输。本发明实施例采用CRC16-CCITT(CCITT标准的16位循环冗余校验)检验实现差错控制,通用标准规定CRC多项式为G(X)=X16+X12+X5+1(对应的二进制流为:1000100000010001,即0x8005),原始信息码根据G(X)生成校验码,反之接收端通过G(X)进行校验。数据发送端校验输入流为数据净荷及长度位。
校验和:该字段为原有北斗通信协议内字段,其占用一个字节,计算方式为对报文做异或运算。但此检验位为串口检验,即只保证从开发板到卫星通信板之间的串口传输的数据的正确性,并不保证卫星通信中数据的保真传输。
204:可靠有效传输机制建立;
北斗民用短报文通信协议规定每60s发送一次数据,一次传输的最大数据长度为600bit,即75Byte,传输资源有限。针对北斗通信低效率问题,本发明实施例在北斗通信机内实现了分包粘包策略;另外北斗短报文通信无回执,为保证可靠通信及无失真数据传输,本发明实施例分别采用了丢包反馈机制以及差错校验策略。
为实现上述策略,北斗通信机需在共享内存内包含发送反馈标志位,确认标志位及接收反馈标志位三个变量,发送反馈标志位为接收到正确数据,等待发送的反馈标志位;确认标志位为发送数据后等待接收的反馈标志位;接收反馈标志位为接收到的反馈标志位,具体实现如下所示。
一、分包策略:
北斗短报文通信协议规定一次传输的最大数据长度为75字节,由于本发明实施例扩展了协议中的电文内容字段,将4字节作为固定标志位(电文内容第一字节为标志位,第二字节为长度位,后两个字节为检验位),因而本发明实施例中北斗一次传输的最大数据净荷长度为71字节。
1)发送端分包具体实现过程如下:
北斗通信机在接收到用户终端数据后,为用户终端数据分配一个数据序列号,数据序列号占用3位,即循环间隔为8。
若用户终端数据长度过大(数据净荷长度大于71字节),则以71字节为上限进行分段,然后按顺序分配给每段数据一个段序列号,段序列号标识该段数据在用户终端数据中的位置。
分段后的每段数据均进行如下操作:
(1)将段序列号写入电文内容标志位的0-2比特;
(2)标志位的第3比特写入0,表明此段数据为发送数据,而非反馈标志;
(3)非最后一段数据的标志位第4比特写入0,最后一段数据第4比特写入1;
(4)将数据序列号写入标志位5-7比特;
(5)将该段数据的长度写入长度位;
(6)将该段数据的CRC检验码写入数据净荷之后的两字节。由此可组成数据单元。将处理后的数据单元按顺序写入发送缓冲区中,等待发送。
2)北斗通信机在接收到被拆分的数据后,需对数据进行重组,重组过程如下:
若接收到的数据为拆分数据的第一段数据单元,则记其段序列号及数据序列号,将该数据单元中的数据净荷写入终端缓冲区。
继续接收下一段数据单元,比对数据序列号,若相同,再比对段序列号,若确认为应接收的下一段数据单元,则将数据净荷写入终端缓冲区。
重复上一步骤,直至接收到最后一段数据单元,重组完成,而后解析终端缓冲区数据,发给相应的用户终端。
二、粘包策略:
为提高北斗短报文通信效率,本发明实施例对多条短数据单元进行粘包处理。
1)发送端粘包操作如下:
北斗通信机发送数据时,从发送缓冲区读指针开始,读取指针所指单元的第二字节(即长度位),若该单元数据(数据单元由标志位,长度位,数据净荷及检验位组成)长度小于75字节,则将其写入发送数组。
继而读发送缓冲区下一单元,若数据长度和(该单元数据长度与已写入发送数组的数据单元长度总和)小于75字节,则将其写入发送数组。
重复上一步骤,直至数据长度和大于75字节,停止读取,对发送数组中的数据进行打包发送。
若为粘包发送,则合并数据中的每单元数据均为最后一段数据(若为被拆分数据中的非最后一段,则数据长度一定为71字节,因而不会写入发送数组中)。
2)当接收方北斗通信机接收到数据后,将去除北斗协议包头包尾,将电文内容中的数据写入接收缓冲区,继而按照数据长度位读取相应长度数据,提取数据单元,对其进行解析,发往相应用户终端,重复上述步骤,直至接收缓冲区为空。
三、丢包反馈机制:
北斗短报文通信为不可靠通信,无通信回执,为提高其通信可靠性,采用丢包反馈机制。
1)发送端操作如下:
发送端北斗通信机发送一条报文后,将其标志位写入共享内存的确认标志位中,若发送报文内数据为分包数据的非最后一段,则记录其标志位即可,若发送报文内数据为粘包数据,则记录最后一个合并单元的标志位。
等待接收,检查每一接收数据包的电文内容第一字节是否为反馈标志位,若为反馈标志位,则将第3比特置为0,写入共享内存中的接收反馈标志位。
对比共享内存的确认标志位与接收反馈标志位,若相同,则证明此条数据发送成功,删除发送缓冲区中发送成功的数据单元;若不同,则逐一对比接收反馈标志位与发送数组中的每个单元的标志位,若与其中之一相同,则证明数据发送部分成功,其中一个单元出现误码,删除发送缓冲区中发送成功的数据单元,将发送缓冲区读指针指向出现误码的数据单元。
若接收反馈标志位与每单元标志位均不同或一分钟内未接收到反馈,则证明数据发送失败,继续发送,直至发送4次,若4次均失败,则修改用户状态表,删除发送缓冲区中相应数据单元即可。
2)接收方北斗通信机接收到正确的数据后需向发送方北斗通信机发送反馈,具体操作如下:
接收方北斗通信机在接收到数据后,提取数据单元。判断该单元数据是否正确,若正确,则将标志位的第3比特置为1,写入共享内存中的发送反馈标志位,继而读取下一单元;若错误,则后面的数据不进行处理,直接丢弃,发送反馈标志位中记录的是接收到的最后一单元正确数据的标志位。
本发明实施例设置发送反馈标志位的优先级高于发送数据的优先级,即无论是首次发送抑或重新发送数据,均需在发送数据之前检查共享内存中的发送反馈标志位,若发送反馈标志位非空(默认设置发送反馈标志位为0xff,非空即发送反馈标志位不是0xff),则将其写入电文内容的第一字节,将发送数组的数据写入反馈标志位后,若发送数组中的数据已填满卫星的电文内容,则先发送反馈标志位,将原发送数组内的数据1分钟后进行发送。
四、差错校验策略:
北斗通信机在接收到用户终端的数据后,进行分段,对每一段数据净荷均采用CRC-CCITT循环校验码进行计算,得出两位校验位,写入每段数据净荷之后的两字节,将该单元数据写入发送缓冲区。接收端北斗通信机在接收到数据后,提取数据单元,对该单元内的数据净荷进行CRC-CCITT校验计算,得出两位检验码,对比数据净荷之后的检验位以进行差错检验。
205:北斗通信机管理策略;
北斗通信机需要实时与用户终端进行数据交互,每隔1分钟向相应的北斗通信机发送数据以及实时接收相应的北斗通信机传输的数据。北斗通信机所包含的功能模块如图6所示。为完成这些功能模块,北斗通信机内开辟三个子线程进行并行管理。此外,北斗通信机维护一个共享内存以实现子线程间的数据传递。共享内存中包含用户映射表,环形用户缓冲区,用户状态表,发送反馈标志位,确认标志位以及接收反馈标志位信息。子线程访问共享内存时通过加互斥锁保证共享数据的完整性。通信过程中,客户端以编号进行区分,每个客户端编号确定唯一,北斗通信机维护一张用户映射表,映射表选项包括套接字描述符,客户端编号以及客户端IP地址,客户端IP地址为映射表中的主键;环形用户缓冲区内保存用户待发送的数据;用户状态表用于记录用户最后一条数据的发送状态,以满足用户查询需求,用户状态表内维持三种状态,分别是发送中,发送成功及发送失败。
北斗通信机具体管理策略如下所示。
子线程1负责与用户终端进行数据交互,为扩大数据交互范围,采用I/O复用技术,依靠select机制实时监听socket请求,维持北斗通信机与多个用户终端的连接。根据实际需求,本发明实施例限制用户终端为16个,子线程1接收到数据后,需进行判断,数据有三种类型,分别是连接请求,发送数据以及状态查询。若为连接请求数据,则接受请求,更新用户映射表;若为发送数据,则需对接收到的数据进行处理,首先将数据净荷最后一字节取出,最后一字节为接收端用户编号,查询用户映射表,得到发送方用户编号,将其与接收端用户编号写入数据净荷最后一字节,若数据长度大于71字节,则以71字节对数据进行分段,然后在每段数据净荷前加入标志位,长度位,在每段数据净荷后加入两位CRC检验位,最后将处理过的数据写入环形用户缓冲区;若为状态查询,则将用户状态表中对应信息反馈用户。具体流程如图7所示。
子线程2实时监听与相应北斗通信机的串口,实时接收数据,串口接收数据后,进行数据包的检测与解析。主要包括:重复数据检测,差错检测以及拆包重组包的处理。当接收到报文时,首先进行差错校验,若其传输过程中无失真,即使是重复数据,也需向发送方北斗通信机发送反馈,发送反馈后,丢弃重复数据(差错检验及拆包粘包处理机制详情见可靠有效传输机制建立)。在对数据进行相应处理后,最终发送给用户终端的格式为净荷数据及发送端编号。具体实现流程如图8所示。
子线程3负责定时发送数据。子线程3内维护一个定时器和一个计数器,定时器定时为1分钟,计数器定义为4。定时器到时,从环形发送缓冲区内取出数据进行粘包,卫星短报文协议打包发送,待下次定时器到时,检验数据是否发送成功,若不成功,则重新发送,根据多次实验结果,设定计数器为4,即数据最多发送4次,若4次均不成功,则修改用户状态表,丢弃该段数据。具体实现流程如图9所示。
同一时刻,一对北斗通信机可进行全双工通信,即均可在作为发送方发送信息的同时作为接收方接收信息。为方便解释通信过程,将一对北斗通信机定义为发送方北斗通信机与接收方北斗通信机,具体通信过程如图10所示。此过程亦可同时逆向进行。
206:用户终端功能设计;
用户终端主要功能为发送数据,实时接收数据以及发送数据状态查询。用户终端在进行发送数据之前,需建立与北斗通信机的连接,并在北斗通信机上注册自己的编号;用户终端发送的数据包括数据净荷以及接收端编号两部分;用户端发送数据状态查询只能查询最后一条数据的发送状态,若用户连续发送多条数据,则用户状态表内也只记录最后一条数据的状态,因而建议用户分条发送数据。用户终端软件界面设计如图11所示。
综上所述,本发明利用粘包策略将长度小于卫星传输长度的数据合并在一个卫星短报文中进行发送,即将多次发送合并为一次发送,极大提高了卫星传输效率。本发明采用I/0复用技术,在两个小型局域网间建立了可靠高效数据传输链路,打破北斗通信范围的局限。
实施例3
该实施例中的操作原理与实施例1、2相同,仅是对北斗通信机的硬件部分进行了举例说明,结合了最大用户终端数、交互时间对实施例1和2中的方案进行试验性说明,详见下文描述:
北斗通信机的硬件部分使用GT6805工控板实现,该开发板的处理器为三星公司生产的S3C2416处理器,板载128MByte DDR2 SDRAM,256MByte NAND Flash,3路RS232串口、1路RJ45网口以及1路USB Host,1个自弹SD卡座,电源插口为标准5.5*2.1mmDC插口。卫星设备为东方联星公司生产的北斗卫星通信板和北斗卫星通信天线。北斗通信机集成GT6805与北斗卫星通信板及天线,向外提供1路DB9 RS232串口,可用于计算机控制调试;1路RJ45100M高性能以太网口,用于与用户终端进行数据交互;1个自弹SD卡座,用于进行北斗通信机系统恢复;一个标准5.5*2.1mmDC电源插口,需外部提供9V~24V宽压供电进行启动。北斗通信机实现了北斗通信网与因特网的融合。
同时与一方北斗通信机建立连接的最大用户终端数为16。当连接的用户终端数超过该限定值时,发送一条数据需等待的时间会大大增加。该限定保证了用户体验友好性。
若用户终端10分钟内未与北斗通信机进行任何数据交互,则北斗通信机主动断开与该用户终端的连接,并将资源分配给其他需要通信的用户终端。该措施提高了北斗通信机的利用率。
北斗通信机维护客户状态表,记录客户端发送的最后一条数据的状态信息,但并不主动推送状态信息给用户,需用户自主查询。
考虑用户状态表对用户连续发送的多条数据只记录最后一条数据的状态,因而建议用户分条发送数据。
用户发送的数据长度不宜过长,否则接收到该数据需等待较长时间。
本发明实施例采用反馈重传机制,极大提高了发送成功率。使用上述北斗通信设计装置及方法进行远程数据传输,通过对数据传输进行误码率对比测试来评估效果。实验中采用一对北斗通信机作为数据传输中介,每个北斗通信机均与16个用户终端进行数据交互,设计每个用户终端相隔1分钟进行数据交互,且发送的数据为随机产生的随机长度的数据,在综合各种环境条件下,对比反馈重传机制与无反馈机制下的一条报文发送成功率,实验将失真的数据作为丢包来处理。最好环境条件下,无反馈发送报文丢包率为0.562%,重传策略下传输丢包率为0,最差环境条件下,无反馈发送报文丢包率为62.5%,重传策略下传输丢包率为28.571%,结果为重传策略比无反馈机制丢包率平均降低46.877%。
对于传输成功的报文,无反馈机制报文传输时间(从北斗通信机发送数据到相应北斗通信机成功接收的时间差,以太网传输时间可忽略不计)平均为78.252秒,而重传策略下报文传输时间平均为91.26秒。
采用重传策略只有当北斗发送端接收到相应反馈才认为是传输成功,因而存在北斗接收端接收成功但发送端误认为发送失败的情况,实验结果表明存在0.74%的报文状态错误。
数据表明,虽然本发明实施例中提出的反馈重传策略相对于原始卫星短报文无反馈机制一条报文传输时延增加了13秒,状态错误增加0.74%左右,但总体来说,北斗短报文通信相隔1分钟发送一次数据,而二者报文传输时间均在2分钟内,因而并无太大影响,状态误差0.74%在实际应用中也属于可接收的误差范畴。
综上所述,本发明在信号盲区进行数据的可靠传输但对实时性要求不大的场合有较大的实际应用价值。
实施例4
一种基于北斗卫星的可靠远程通信装置,参见图12,可靠远程通信装置包括:
定制控制器,用于依据TCP/IP协议与北斗通信协议,定制远程通信协议;
传输控制器,用于通过分包粘包策略、丢包反馈机制以及差错校验策略建立有效传输机制;
管理控制器,用于通过在北斗通信机内开辟三个子线程,对北斗通信机进行管理。
其中,定制控制器包括:分配模块,
分配模块用于将电文内容的第1字节作为标志位,将第2字节用作长度位,电文内容最后两个字节用作检验位。
进一步地,分配模块还包括:分配子模块,
分配子模块用于将第1字节标志位中的0-2比特用作段序列号;第3比特用作反馈标识;第4比特用作末位标识;第5-7比特表示数据序列号。
其中,传输控制器包括:分包模块、粘包模块、丢包反馈模块以及差错校验模块,
分包模块,用于北斗通信机为用户终端数据分配数据序列号,若用户终端数据大于最大数据净荷长度,以所述最大数据净荷长度进行分段,依次分配段序列号,所述段序列号标识每段数据在用户终端数据中的位置;北斗通信机在接收到被拆分的数据后,对数据进行重组。
进一步地,分包模块还包括重组子模块,该重组子模块用于记录数据的段序列号及数据序列号,将数据净荷写入终端缓冲区;
接收下一段数据单元,比对数据序列号,若相同,比对段序列号,确认为应接收的数据单元时,将数据净荷写入终端缓冲区;
直至接收到最后一段数据单元,重组完成,解析终端缓冲区数据,发给相应的用户终端。
粘包模块,用于从发送缓冲区读指针开始,读取指针所指数据单元的长度位,若数据单元长度小于75字节,写入发送数组;读发送缓冲区下一数据单元,直至数据长度和大于75字节,停止读取,对发送数组中的数据打包发送;接收到数据后,去除包头包尾,将电文内容中的数据写入接收缓冲区,按照长度位读取相应长度数据,提取数据单元,进行解析,发往相应用户终端。
丢包反馈模块,用于发送报文后,将标志位写入共享内存的确认标志位中,若发送报文内数据为粘包数据,则记录最后一个合并单元的标志位;检查每一接收数据包的电文内容第一字节是否为反馈标志位,若为反馈标志位,将标志位的第3比特置为0,写入共享内存中的接收反馈标志位;对比共享内存的确认标志位与接收反馈标志位,若相同,数据发送成功,删除发送缓冲区中发送成功的数据单元;若不同,对比接收反馈标志位与发送数组中的每个单元的标志位,若与其中之一相同,数据发送部分成功,删除发送缓冲区中发送成功的数据单元,将发送缓冲区读指针指向出现误码的数据单元;
接收数据后,提取数据单元,若数据单元正确,将标志位的第3比特置为1,写入共享内存中的发送反馈标志位,读取下一单元;
若错误,直接丢弃后续单元的数据,发送反馈标志位中记录的是接收到的最后一单元正确数据的标志位。
其中,差错校验模块,用于对每一段数据净荷采用循环校验码进行计算,得出两位校验位,写入每段数据净荷之后的两字节,将单元数据写入发送缓冲区;
接收到数据后,提取数据单元,对数据净荷进行校验计算,得出两位检验码,对比数据净荷之后的检验位以进行差错检验。
其中,管理控制器包括:第一子线程模块、第二子线程模块和第三子线程模块,
第一子线程模块,用于与用户终端进行数据交互,采用I/O复用技术,依靠选择机制实时监听套接字请求,维持北斗通信机与多个用户终端的连接;
第二子线程模块,用于监听北斗通信机的串口,实时接收北斗通信数据,串口接收数据后,进行数据包的检测与解析;
第三子线程模块,用于定时发送北斗通信数据。
本发明实施例对各器件的型号除做特殊说明的以外,其他器件的型号不做限制,只要能完成上述功能的器件均可。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。