CN104734810A - 一种处理传输数据的方法和装置 - Google Patents

一种处理传输数据的方法和装置 Download PDF

Info

Publication number
CN104734810A
CN104734810A CN201510102835.2A CN201510102835A CN104734810A CN 104734810 A CN104734810 A CN 104734810A CN 201510102835 A CN201510102835 A CN 201510102835A CN 104734810 A CN104734810 A CN 104734810A
Authority
CN
China
Prior art keywords
data
storage area
preset
length
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510102835.2A
Other languages
English (en)
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201510102835.2A priority Critical patent/CN104734810A/zh
Publication of CN104734810A publication Critical patent/CN104734810A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开一种处理传输数据的方法和装置,该方法包括以下步骤:①、接收第五预设长度的数据,将接收到的数据存储到第三存储区;②、判断所述第三存储区中的数据是否符合预设格式,如果不符合预设格式,则执行步骤③或者④;如果符合预设格式,则结束流程;③、对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;④、将所述第三存储区中的数据存储到第四存储区;⑤、对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。本发明通过对接收到的数据进行重新组合,以使组合后的数据符合预设格式,缩短了数据接收时间,提高了数据接收速度。

Description

一种处理传输数据的方法和装置
技术领域
本发明涉及通信技术领域,特别是涉及一种处理传输数据的方法和装置。
背景技术
在数据传输过程中,由于接收端没有反向的传输通道对接收到的数据进行反馈确认,发送端通常采用循环播放的方法发送数据。发送端发送的数据通常包括数据头、数据长度、数据正文和校验码。接收端通过从数据头开始,进行数据采集。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
现有的数据传输机制中,当存在接收端介入的时间差时,即,当接收端初始介入接收的数据不是数据头时,接收端通常会从下一次传输的数据头开始接收数据,导致接收端的接收时间加长。
发明内容
本发明实施例提供了一种处理传输数据的方法和装置,用以解决数据传输过程中由于接收端介入的时间差而导致的接收时间过长的问题。
本发明实施例提供了一种处理传输数据的方法,包括以下步骤:
①、接收第五预设长度的数据,将接收到的数据存储到第三存储区;
②、判断所述第三存储区中的数据是否符合预设格式,如果不符合预设格式,则执行步骤③或者④;如果符合预设格式,则结束流程;
③、对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;
④、将所述第三存储区中的数据存储到第四存储区;
⑤、对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。
本发明实施例还提供了一种处理传输数据的装置,包括:
接收模块,用于接收第五预设长度的数据,将接收到的数据存储到第三存储区;
第一判断模块,用于判断所述第三存储区中的数据是否符合预设格式;
处理模块,用于在所述第一判断模块判断所述第三存储区中的数据不符合预设格式时,对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;
或者,在所述第一判断模块判断所述第三存储区中的数据不符合预设格式时,将所述第三存储区中的数据存储到第四存储区,对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。
本发明实施例通过对接收到的数据进行拼接,或者通过对接收到的数据进行移位以实现对该数据的重新组合,能够减少数据接收时间,提高数据接收速度。
附图说明
图1为本发明实施例一中的一种处理传输数据的方法流程图;
图2为本发明实施例二中的一种处理传输数据的方法流程图;
图3为本发明实施例三中的一种处理传输数据的方法流程图;
图4为本发明实施例四中的一种处理传输数据的方法流程图;
图5为本发明实施例五中的一种处理传输数据的方法流程图;
图6为本发明实施例六中的一种处理传输数据的装置结构图;
图7为本发明实施例七中的一种处理传输数据的装置结构图;
图8为本发明实施例八中的一种处理传输数据的装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提出一种处理传输数据的方法,发送端以比特为单位发送数据,传输数据按照从高位到低位的顺序依次包括:数据头、数据类别、数据长度、有效数据和校验码,其中,数据头的长度为第一预设数量比特,数据类别和数据长度的长度之和为第二预设数量比特,数据长度的长度为第三预设数量比特。接收端处理传输数据的方法流程,如图1所示,包括以下步骤:
步骤101,接收第一预设数量比特的数据,将接收到的数据存储到第一存储区。
其中,第一预设数量比特可以为数据头的长度,数据头用于指示数据的开始。例如,当数据头的长度为6比特时,可以接收6比特的数据,并将该6比特的数据存储到第一存储区。
步骤102,判断第一存储区中最后接收到的第一预设数量比特的数据是否为数据头,如果是,则执行步骤104,否则,执行步骤103。
具体地,当数据头的内容为预设内容时,判断第一存储区中最后接收到的第一预设数量比特的数据的内容是否为预设内容。
例如,当数据头的长度为6比特,内容为“111110”时,可以判断第一存储区中最后接收到的6比特的数据的内容是否为“111110”。
步骤103,继续接收第十一预设数量比特的数据,将接收到的数据存储到第一存储区,并返回步骤102。
其中,第十一预设数量比特可以为1比特,也可以为其他数量的比特。
步骤104,继续接收第二预设数量比特的数据,将该数据存储到第二存储区。
其中,第二预设数量比特可以为数据类别和数据长度的长度之和。例如,当数据类别的长度为2比特,数据长度的长度为8比特时,可以继续接收10比特的数据,并将该10比特的数据存储到第二存储区。
步骤105,根据第二存储区中最后接收到的第三预设数量比特的数据,获取数据长度。
具体地,可以读取第二存储区中最后接收到的第三预设数量比特的数据的内容,将该内容作为数据长度。数据长度通常以BCD码的形式表示。例如,当第三预设数量比特为8比特,第二存储区中最后接收到的第三预设数量比特的数据为“00010100”时,则数据长度为20比特。
步骤106,根据校验码的长度、第一存储区中除数据头之外的其他数据的长度和数据长度,获取需要接收的剩余数据长度。
具体地,可以将校验码的长度和数据长度之和,减去第一存储区中除数据头之外的其他数据的长度,得到需要接收的剩余数据长度。
例如,当数据长度为20比特,校验码的长度为4比特,第一存储区存储有16比特的数据,其中包括长度为6比特的数据头时,则需要接收的剩余数据长度为20+4-(16-6)=14比特。
步骤107,判断需要接收的剩余数据长度是否大于零,如果大于零,则执行步骤108;否则,执行步骤109。
步骤108,根据需要接收的剩余数据长度,继续接收数据,将接收到的数据存储到第二存储区,并对第一存储区和第二存储区中的数据进行拼接。
具体地,可以继续接收长度为需要接收的剩余数据长度的数据,并将该数据存储到第二存储区。在对第一存储区和第二存储区中的数据进行拼接时,可以按照第一存储区中的数据头、第二存储区中的数据、第一存储区中除数据头之外的其他数据的顺序,进行拼接。
例如,当需要接收的剩余数据长度为14比特时,可以继续接收14比特的数据“01010101010101”,并将该数据“01010101010101”存储到第二存储区中,则第二存储区存储的数据的内容为“010001010001010101010101”。第一存储区存储有16比特数据“0101010101111110”,其中包括长度为6比特的数据头“111110”,则拼接得到的数据为“1111100100010100010101010101010101010101”。
步骤109,判断需要接收的剩余数据长度是否为零,如果为零,则执行步骤110;否则,执行步骤111。
步骤110,对第一存储区和第二存储区中的数据进行拼接。
具体地,在对第一存储区和第二存储区中的数据进行拼接时,可以按照第一存储区中的数据头、第二存储区中的数据、第一存储区中除数据头之外的其他数据的顺序,进行拼接。
例如,当第一存储区存储有30比特“010101010101010101010101111110”,其中包括长度为6比特的数据头“111110”,第二存储区存储的数据的内容为“0100010100”,则拼接得到的数据为“1111100100010100010101010101010101010101”。
步骤111,根据校验码的长度、第一存储区中除数据头之外的其他数据的长度和数据长度,获取丢弃数据长度。
具体地,可以将第一存储区中除数据头之外的其他数据的长度,减去校验码的长度和数据长度之和,得到丢弃数据长度。
例如,当数据长度为20比特,校验码的长度为4比特,数据头的长度为6比特,第一存储区存储有36比特的数据,则丢弃数据长度为(36-6)-(20+4)=6比特。
步骤112,根据丢弃数据长度,将第一存储区和/或第二存储区中的部分数据丢弃,并对第一存储区和第二存储区中的数据进行拼接。
具体地,可以对第一存储区中最先接收的、长度为丢弃数据长度的数据进行丢弃,并按照第一存储区中的数据头、第二存储区中的数据、第一存储区中除数据头之外的其他数据的顺序,对第一存储区和第二存储区中的数据进行拼接。
例如,当丢弃数据长度为6比特,第一存储区存储有36比特的数据“010100010101010101010101010101111110”,第二存储区存储有10比特的数据“0100010100”,则将第一存储区中最先接收到的6比特数据“010100”丢弃,拼接得到的数据为“1111100100010100010101010101010101010101”。
也可以对第二存储区中最后接收到的、长度为丢弃数据长度的数据进行丢弃,并按照第一存储区中的数据头、第二存储区中的数据、第一存储区中除数据头之外的其他数据的顺序,对第一存储区和第二存储区中的数据进行拼接。
例如,当丢弃数据长度为6比特,第一存储区存储有36比特的数据“010100010101010101010101010101111110”,第二存储区存储有10比特的数据“0100010100”,则将第二存储区中最后接收到的6比特数据“010100”丢弃,拼接得到的数据为“1111100100010100010101010101010101010101”。
还可以对第一存储区中最先接收的、长度为第四预设数量比特的数据进行丢弃,对第二存储区中最后接收到的、长度为丢弃数据长度与第四预设数量比特之差的数据进行丢弃,并按照第一存储区中的数据头、第二存储区中的数据、第一存储区中除数据头之外的其他数据的顺序,对第一存储区和第二存储区中的数据进行拼接,其中,第四预设数量比特小于丢弃数据长度。
例如,当丢弃数据长度为6比特,第四预设数量比特为3比特,第一存储区存储有36比特的数据“010100010101010101010101010101111110”,第二存储区存储有10比特的数据“0100010100”,则将第一存储区中最先接收到的3比特数据“010”丢弃,将第二存储区中最后接收到的3比特数据“100”丢弃,拼接得到的数据为“1111100100010100010101010101010101010101”。
本发明实施例在接收到数据头和数据长度之后,根据该数据长度以及在接收到数据头之前接收并存储的数据的长度,确定是否继续接收数据,并对接收到的数据进行拼接,能够减少数据接收时间,提高数据接收速度。
需要说明的是,在本发明的其他实施方式中,第一存储区和第二存储区可以为同一存储区。
在本发明的其他实施方式中,传输数据按照从高位到低位的顺序依次包括:数据头、数据长度、数据类别、有效数据和校验码,其中,数据类别和数据长度的长度之和为第二预设数量比特,数据长度的长度为第三预设数量比特,相应地,可以根据第二存储区中最先接收到的第三预设数量比特的数据,获取数据长度。
在本发明的其他实施方式中,传输数据按照从高位到低位的顺序依次包括:数据头、数据长度、有效数据和校验码,相应地,第二预设数量比特与第三预设数量比特相等。
实施例二
在本发明实施例二中,发送端可以发送预设长度的数据,即,发送端与接收端预先约定需要传输的数据的长度,发送端发送的数据中包括:数据头、有效数据和校验码,数据总长度为第五预设数量比特,数据头的长度为第六预设数量比特,有效数据的长度为第七预设数量比特。本发明实施例二中的接收端处理传输数据的方法,如图2所示,包括以下步骤:
步骤201,接收端接收第五预设数量比特的数据,将接收到的数据存储到第三存储区。
其中,第五预设数量比特为发送端发送的数据头、有效数据和校验码的长度之和。当发送端先发送高位数据时,接收端可以将先接收到的数据作为高位数据存储到第三存储区,将后接收到的数据作为低位数据存储到第三存储区;当发送端先发送低位数据时,接收端可以将先接收到的数据作为低位数据存储到第三存储区,将后接收到的数据作为高位数据存储到第三存储区。
步骤202,接收端判断第三存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤203。
其中,预设格式可以为:按照从高位到低位的顺序,第三存储区中的数据依次包括数据头、有效数据和校验码,数据头的长度为第六预设数量比特,有效数据的长度为第七预设数量比特,且数据头的内容为预设内容,根据有效数据计算得到的校验值与校验码的内容相同。
接收端可以按照从高到低的顺序从第三存储区读取第六预设数量比特的数据,判断读取到的数据的内容是否为预设内容,如果不是预设内容,则确定存储的数据不符合预设格式;如果是预设内容,则继续从第三存储区读取第七预设数量比特的数据,根据读取到的第七预设数量比特的数据获取校验值,判断该校验值是否与第三存储区中剩余的数据的内容相同,如果相同,则确定第三存储区中的数据符合预设格式;如果不同,则确定第三存储区中的数据不符合预设格式。
例如,第五预设数量比特为30个比特,第六预设数量比特为6个比特,第七预设数量比特为20个比特,第三存储区中的数据为“111110010101010101010101010101”,接收端先读取6个比特的数据“111110”,在确定读取的6个比特的数据的内容与预设内容相同后,继续读取20个比特的数据“01010101010101010101”,根据该20个比特的数据计算校验值,如果计算得到的校验值与剩余的数据“0101”相同,则确定第三存储区中的数据符合预设格式;否则,则确定存储的数据不符合预设格式。
步骤203,接收端将第三存储区中的数据存储到第四存储区,将第四存储区中的数据左移第八预设数量比特,将被移出第四存储区的数据补到移位后的剩余数据的右端,并将左移次数加1。
具体地,接收端可以按照各个比特数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中的剩余数据的右端。其中,第八预设数量比特可以为1比特,也可以大于1比特,左移次数的初始值可以为0。
例如,当第四存储区存储的数据为“010111111001010101010101010101”,第八预设数量比特为4个比特时,接收端可以将“0101”移出第四存储区,并将“0101”存储到移位后的剩余数据“11111001010101010101010101”的右端,得到“111110010101010101010101010101”。
步骤204,接收端判断第四存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤205。
具体地,接收端判断第四存储区中的数据是否符合预设格式的具体方法,可以与步骤202中接收端判断第三存储区中的数据是否符合预设格式的具体方法相同。
步骤205,接收端判断左移次数是否小于预设次数,如果小于预设次数,则返回步骤203;否则,执行步骤206。
其中,当第八预设数量比特为1比特时,预设次数的取值可以为第四存储区存储的数据的比特数减1得到的结果。
步骤206,接收端将第三存储区中最先接收到的第九预设数量比特的数据丢弃,从发送端接收第九预设数量比特的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并返回步骤202。
具体地,接收端可以将接收到的第九预设数量比特的数据存储到第三存储区中的已有数据的右端或左端,接收端将第九预设数量比特的数据存储到第三存储区的方式,可以与接收端将第五预设数量比特的数据存储到第三存储区的方式相同。其中,第九预设数量比特可以为1比特,也可以大于1比特。
本发明实施例在接收到的数据不符合预设格式时,通过对接收到的数据进行移位以实现对该数据的重新组合,以使组合后的数据符合预设格式,可以在预定长度数据对应的时间内将数据接收完毕,缩短了数据接收时间,提高了数据接收速度。
需要说明的是,在本发明的其他实施方式中,接收端也可以将第四存储区中的数据右移第十预设数量比特,将被移出的数据补到第四存储区中的剩余数据的左端。具体地,接收端可以按照各个比特数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中与已有数据相邻的位置,即,已有数据的左端,并继续判断第四存储区中的数据是否符合预设格式。同样可以实现本发明的发明目的。
在本发明的其他实施方式中,可以将第四存储区中的数据定义为一个循环队列,当第四存储区中的数据不符合预设格式时,则将该循环队列的指针向预设方向移位第八预设数量比特,将移位次数加1,并判断移位后的循环队列中的数据是否符合预设格式,如不符合,则继续将该循环队列的指针向预设方向移位第八预设数量比特,直到移位后的循环队列中的数据符合预设格式,或者移位次数大于或等于预设次数,则将第三存储区中最先接收到的第九预设数量比特的数据丢弃,从发送端接收第九预设数量比特的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并继续判断第三存储区中的数据是否符合预设格式。
在本发明的其他实施方式中,发送端发送的数据中包括:有效数据和校验码,数据总长度为第五预设数量比特,有效数据的长度为第七预设数量比特。相应地,预设格式可以具体为:按照从高位到低位的顺序,数据依次包括有效数据和校验码,有效数据的长度为第七预设数量比特,且根据有效数据计算得到的校验值与校验码的内容相同。
实施例三
本发明实施例一和本发明实施例二中,发送端以比特为单位发送数据;本发明实施例三中,发送端以字节为单位发送数据,传输数据包括:数据头、数据长度、有效数据和校验码,其中,数据头的长度为第一预设数量字节,数据长度的长度为第二预设数量字节。接收端处理传输数据的方法流程,如图3所示,包括以下步骤:
步骤301,接收第一预设数量字节的数据,将接收到的数据存储到第五存储区。
其中,第一预设数量字节可以为数据头的长度。例如,当数据头的长度为2字节时,可以接收2字节的数据,并将该2字节的数据存储到第五存储区。
步骤302,判断第五存储区中最后接收到的第一预设数量字节的数据是否为数据头,如果是,则执行步骤304,否则,执行步骤303。
具体地,当数据头的内容为预设内容时,判断第五存储区中最后接收到的第一预设数量字节的数据的内容是否为预设内容。
例如,当数据头的长度为2字节,预设内容为“AA 44”时,可以判断第五存储区中最后接收到的2字节的数据的内容是否为“AA 44”。
步骤303,继续接收第十一预设数量字节的数据,将接收到的数据存储到第五存储区,并返回步骤302。
其中,第十一预设数量字节可以为1字节,也可以为其他数量的字节。
步骤304,继续接收第二预设数量字节的数据,将该数据存储到第六存储区。
其中,第二预设数量字节可以为数据长度的长度。例如,当数据长度的长度为1字节时,可以继续接收1字节的数据,并将该1字节的数据存储到第六存储区。
步骤305,根据第六存储区存储的数据,获取数据长度。
具体地,可以读取第六存储区存储的数据的内容,将该内容作为数据长度。例如,当第六存储区存储的数据为“05”时,则数据长度为5字节。
步骤306,根据校验位的长度、第五存储区中除数据头之外的其他数据的长度和数据长度,获取需要接收的剩余数据长度。
具体地,可以将校验位的长度和数据长度之和,减去第五存储区中除数据头之外的其他数据的长度,得到需要接收的剩余数据长度。
例如,当数据长度为5字节,校验位的长度为1字节,第五存储区存储有4字节的数据,其中包括长度为2字节的数据头时,则需要接收的剩余数据长度为5+1-(4-2)=4字节。
步骤307,判断需要接收的剩余数据长度是否大于零,如果大于零,则执行步骤308;否则,执行步骤309。
步骤308,根据需要接收的剩余数据长度,继续接收数据,将接收到的数据存储到第六存储区,并对第五存储区和第六存储区中的数据进行拼接。
具体地,可以继续接收长度为需要接收的剩余数据长度的数据,并将该数据存储到第六存储区。在对第五存储区和第六存储区中的数据进行拼接时,可以按照第五存储区中的数据头、第六存储区中的数据、第五存储区中除数据头之外的其他数据的顺序,进行拼接。
例如,当需要接收的剩余数据长度为4字节时,可以继续接收4字节的数据,并将该数据存储到第六存储区中,则第六存储区存储的数据的内容为“05 0102 03 04”。第五存储区存储有4字节的数据“05 EA AA 44”,其中包括长度为2字节的数据头“AA 44”,则拼接得到的数据为“AA 44 05 01 02 03 04 05 EA”。
步骤309,判断需要接收的剩余数据长度是否为零,如果为零,则执行步骤310;否则,执行步骤311。
步骤310,对第五存储区和第六存储区中的数据进行拼接。
具体地,在对第五存储区和第六存储区中的数据进行拼接时,可以按照第五存储区中的数据头、第六存储区中的数据、第五存储区中除数据头之外的其他数据的顺序,进行拼接。
例如,当第五存储区存储有4字节的数据“05 EA AA 44”,其中包括长度为2字节的数据头“AA 44”,第六存储区存储的数据的内容为“05 01 02 03 04”,则拼接得到的数据为“AA 44 05 01 02 03 04 05 EA”。
步骤311,根据校验码的长度、第五存储区中除数据头之外的其他数据的长度和数据长度,获取丢弃数据长度。
具体地,可以将第五存储区中除数据头之外的其他数据的长度,减去校验码的长度和数据长度之和,得到丢弃数据长度。
例如,当数据长度为5字节,校验位的长度为1字节,数据头的长度为2字节,第五存储区存储有4字节的数据,第六存储区存储有6字节的数据,则丢弃数据长度为(6+4-2)-(5+1)=2字节。
步骤312,根据丢弃数据长度,将第五存储区和/或第六存储区中的部分数据丢弃,并对第五存储区和第六存储区中的数据进行拼接。
具体地,可以对第五存储区中最先接收的、长度为丢弃数据长度的数据进行丢弃,并按照第五存储区中的数据头、第六存储区中的数据、第五存储区中除数据头之外的其他数据的顺序,对第五存储区和第六存储区中的数据进行拼接。
例如,当丢弃数据长度为2字节,第五存储区存储有4字节的数据“05 EAAA 44”,第六存储区存储有6字节的数据“05 01 02 03 04 05 EA”,则将第五存储区中最先接收到的2字节的数据“05 EA”丢弃,拼接得到的数据为“AA 44 0501 02 03 04 05 EA”。
也可以对第六存储区中最后接收到的、长度为丢弃数据长度的数据进行丢弃,并按照第五存储区中的数据头、第六存储区中的数据、第五存储区中除数据头之外的其他数据的顺序,对第五存储区和第六存储区中的数据进行拼接。
例如,当丢弃数据长度为2字节,第五存储区存储有4字节的数据“05 EAAA 44”,第六存储区存储有6字节的数据“05 01 02 03 04 05 EA”,则将第六存储区中最后接收到的2字节的数据“05 EA”丢弃,拼接得到的数据为“AA 44 0501 02 03 04 05 EA”。
还可以对第五存储区中最先接收的、长度为第四预设数量字节的数据进行丢弃,对第六存储区中最后接收到的、长度为丢弃数据长度与第四预设数量字节之差的数据进行丢弃,并按照第五存储区中的数据头、第六存储区中的数据、第五存储区中除数据头之外的其他数据的顺序,对第五存储区和第六存储区中的数据进行拼接,其中,第四预设数量字节小于丢弃数据长度。
例如,当丢弃数据长度为2字节,第四预设数量字节为1字节,第五存储区存储有4字节的数据“05 EA AA 44”,第六存储区存储有6字节的数据“05 0102 03 04 05 EA”,则将第五存储区中最先接收到的1字节的数据“05”丢弃,将第六存储区中最后接收到的1字节的数据“EA”丢弃,拼接得到的数据为“AA44 05 01 02 03 04 05 EA”。
本发明实施例在接收到数据头和数据长度之后,根据该数据长度以及在接收到数据头之前接收并存储的数据的长度,确定是否继续接收数据,并对接收到的数据进行拼接,能够减少数据接收时间,提高数据接收速度。
需要说明的是,在本发明的其他实施方式中,第五存储区和第六存储区可以为同一存储区。
在本发明的其他实施方式中,传输数据按照从高位到低位的顺序依次包括:数据头、数据长度、数据类别、有效数据和校验码,其中,数据类别和数据长度的长度之和为第二预设数量比特,数据长度的长度为第三预设数量比特,相应地,可以根据第二存储区中最先接收到的第三预设数量比特的数据,获取数据长度。
在本发明的其他实施方式中,传输数据按照从高位到低位的顺序依次包括:数据头、数据类别、数据长度、有效数据和校验码,其中,数据类别和数据长度的长度之和为第二预设数量比特,数据长度的长度为第三预设数量比特,相应地,可以根据第二存储区中最后接收到的第三预设数量比特的数据,获取数据长度。
实施例四
本发明实施例四提供的技术方案中,发送端可以将传输数据分成多个数据包,并循环发送各个数据包,每个数据包包括数据头、编号、有效数据和校验码,其中,数据头的长度为第一预设长度,数据包的长度为第三预设长度,编号和有效数据的长度之和为第四预设长度,有效数据的长度为第五预设长度,数据头和编号的长度之和为第六预设长度,编号的长度为第七预设长度,有效数据和校验码的长度之和为第八预设长度。接收端处理传输数据的方法流程,如图4所示,包括以下步骤:
步骤401,接收第一预设长度的数据,将接收到的数据存储到第七存储区。
其中,第一预设长度可以为数据头的长度。例如,当数据头的长度为2字节时,可以接收2字节的数据,并将该2字节的数据存储到第七存储区。
步骤402,判断第七存储区中最后接收到的第一预设长度的数据是否为数据头,如果是,则执行步骤404,否则,执行步骤403。
具体地,当数据头的内容为预设内容时,判断第七存储区中最后接收到的第一预设数量字节的数据的内容是否为预设内容。
例如,当数据头的长度为2字节,预设内容为“AA 44”时,可以判断第七存储区中最后接收到的2字节的数据的内容是否为“AA 44”。
步骤403,继续接收第二预设长度的数据,将接收到的数据存储到第七存储区中,并返回步骤402。
其中,第二预设长度可以为1字节,也可以为1比特,还可以为其他长度。
步骤404,根据第七存储区中的数据的长度确定需要接收的剩余数据长度,根据该需要接收的剩余数据长度继续接收数据,将接收的数据存储到第八存储区,并按照第七存储区中的数据头、第八存储区中的数据、第七存储区中除数据头之外的其他数据的顺序,对第七存储区和第八存储区中的数据进行拼接,根据数据头的位置,将拼接得到的数据划分为多个长度为第三预设长度的、以数据头为起始位置的数据包,并将该数据包存储到第九存储区。
具体地,可以将发送端发送的传输数据的长度减去第七存储区中的数据的长度,得到需要接收的剩余数据长度,并继续接收长度为需要接收的剩余数据长度的数据,将接收到的数据与第七存储区中的数据拼接,并按照数据头的位置,对拼接得到的数据进行划分,划分得到的多个数据包的长度均为第三预设长度,每个数据包均包括一个数据头,且数据头位于数据包中最靠前的位置。其中,第三预设长度为数据包的长度。
例如,当发送端发送的数据的总长度为36个字节,第三预设长度为9个字节,数据头的内容为“AA 44”,第七存储区中的数据为6个字节“03 04 05 EA AA44”时,则需要接收的剩余数据长度为36-6=30个字节,即,继续接收30个字节的数据“02 01 02 03 04 05 EA AA 44 03 01 02 03 04 05 EA AA 44 04 01 02 03 0405 EA AA 44 01 01 02”,将接收到的数据与第七存储区中的数据拼接,拼接得到的数据为“AA 44 02 01 02 03 04 05 EA AA 44 03 01 02 03 04 05 EA AA 44 04 0102 03 04 05 EA AA 44 01 01 02 03 04 05 EA”,将拼接得到的数据划分为4个长度均为9个字节的数据包,即,“AA 44 02 01 02 03 04 05 EA”、“AA 44 03 01 02 0304 05 EA”、“AA 44 04 01 02 03 04 05 EA”和“AA 44 01 01 02 03 04 05 EA”。
步骤405,判断第九存储区中的数据包是否均符合预设格式,如果是,则执行步骤406;否则,执行步骤407。
其中,预设格式可以为:数据包包括数据头、编号、有效数据和校验码,根据有效数据计算得到的校验值与校验码相同,数据头的内容为预设内容,数据头的长度为第一预设长度,编号和有效数据的长度之和为第四预设长度,有效数据的长度为第五预设长度。
具体地,可以从数据包中读取位置最靠前的(或最先接收到的)、第一预设长度的数据,判断读取到的数据的内容是否为预设内容,如果不是预设内容,则确定该数据包不符合预设格式;如果是预设内容,则继续从该数据包读取第四预设长度的数据,根据最后读取的第五预设长度的数据获取校验值,判断该校验值是否与该数据包中剩余的数据的内容相同,如果相同,则确定该数据包符合预设格式;如果不同,则确定该数据包不符合预设格式。
例如,当数据包的内容为“AA 44 02 01 02 03 04 05 EA”,第一预设长度为2个字节,第四预设长度为6个字节,第五预设长度为5个字节,预设内容为“AA44”时,则先从数据包中读取位置最靠前的2个字节的数据“AA 44”,在确定读取的数据为预设内容时,继续读取6个字节的数据“02 01 02 03 04 05”,根据最后读取的5个字节的数据“01 02 03 04 05”计算校验值,判断计算得到的校验值是否与上述数据包中剩余的数据的内容“EA”相同,如果相同,则确定该数据包符合预设格式;如果不同,则确定该数据包不符合预设格式。
步骤406,按照各个数据包所包含的编号,对第九存储区中的数据包进行重组。
具体地,可以从各个数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取该数据包对应的编号,并根据编号的大小,对与该编号对应的数据包所包含的有效数据进行排序。
例如,当数据包的内容为“AA 44 02 01 02 03 04 05 EA”,第六预设长度为3个字节,第七预设长度为1个字节时,则从该数据包读取位置最靠前的3个字节的数据“AA 44 02”,根据其中最后读取到的、1个字节的数据“02”,获取该数据包对应的编号为“02”,且该编号对应的数据包所包含的有效数据为“01 0203 04 05”。当数据包的内容为“AA 44 01 02 03 03 06 08 BA”,第六预设长度为3个字节,第七预设长度为1个字节时,则从该数据包读取位置最靠前的3个字节的数据“AA 44 01”,根据其中最后读取到的、1个字节的数据“01”,获取该数据包对应的编号为“01”,且该编号对应的数据包所包含的有效数据为“02 0303 06 08”,根据编号“01”和“02”,可以将相应的有效数据排序为“02 03 03 0608 01 02 03 04 05”。
步骤407,将错误次数加1。
步骤408,判断错误次数是否大于预设次数,如果大于,则执行步骤409;否则,执行步骤410。
其中,错误次数的初始值为零。
步骤409,返回错误信息。
步骤410,根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包。
具体地,可以从不符合预设格式的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,并接收第六预设长度的数据,判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述编号,如果是,则继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述编号对应的数据包;如果不是,则继续接收第九预设长度的数据,并继续判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述编号,直到最后接收到的第六预设长度的数据的内容为数据头的内容和上述编号时,继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述编号对应的数据包。其中,第九预设长度可以为1字节,也可以为1比特,还可以为其他长度。
例如,当不符合预设格式的数据包的内容为“AA 44 02 02 02 03 04 05 EA”,该数据包对应的编号为“02”,第六预设长度为3个字节,第八预设长度为6个字节,第三预设长度为9个字节时,则继续接收3个字节的数据,判断最后接收到的3个字节的数据的内容是否为“AA 44 02”,如果是,则继续接收6个字节的数据,并确定最后接收到的9个字节的数据为与编号“02”对应的数据包;如果不是,则继续接收1个字节的数据,并继续判断最后接收到的3个字节的数据的内容是否为“AA 44 02”,直到最后接收到的3个字节的数据的内容为“AA44 02”,继续接收6个字节的数据,并确定最后接收到的9个字节的数据为与编号“02”对应的数据包。
步骤411,判断重新接收的数据包是否均符合预设格式,如果是,则执行步骤414;否则,执行步骤412。
具体地,本步骤判断数据包是否符合预设格式的具体操作过程可以与步骤405判断数据包是否符合预设格式的具体操作过程相同。
步骤412,判断重新接收的数据包中是否存在符合预设格式的数据包,如果存在,则执行步骤413;否则,返回步骤407。
步骤413,根据符合预设格式的数据包所包含的编号,将第九存储区中对应的数据包替换为符合预设格式的数据包,并返回步骤407。
具体地,可以从符合预设格式的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从第九存储区中查询数据头和编号分别与上述数据包的数据头和编号相同的数据包,并将查询到的数据包替换为上述符合预设格式的数据包。
例如,当符合预设格式的数据包的内容为“AA 44 02 01 02 03 04 05 EA”,该数据包对应的编号为“02”时,则从第九存储区中查询数据头和编号分别为“AA 44”和“02”的数据包,将查询到的数据包替换为“AA 44 02 01 02 03 0405 EA”。
步骤414,根据重新接收的数据包所包含的编号,将第九存储区中对应的数据包替换为重新接收的数据包,并按照各个数据包所包含的编号,对第九存储区中的数据包进行重组。
具体地,可以从重新接收的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从第九存储区中查询数据头和编号分别与上述数据包的数据头和编号相同的数据包,将查询到的数据包替换为上述重新接收的数据包,并从第九存储区中的各个数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,根据编号的大小对第九存储区中的数据包所包含的有效数据进行排序。
本发明实施例提供的分组传输方案中,在数据包出错时,根据该数据包所包含的数据头和编号,重新接收对应的数据包,能够减少数据接收时间,提高数据接收速度和数据传输的成功率。
需要说明的是,在本发明的其他实施方式中,第七存储区、第八存储区和第九存储区可以为同一存储区。
在本发明的其他实施方式中,也可以将传输数据的总长度减去第一预设长度,得到需要接收的剩余数据长度;相应地,可以按照第七存储区中的数据头、第八存储区中的数据的顺序,对第七存储区中的数据头和所述第八存储区中的数据进行拼接。
实施例五
在本发明实施例五中,发送端可以发送预设长度的数据,即,发送端与接收端预先约定需要传输的数据的长度,发送端发送的数据中包括:数据头、有效数据和校验码,数据总长度为第五预设数量字节,数据头的长度为第六预设数量字节,有效数据的长度为第七预设数量字节。本发明实施例五中的接收端处理传输数据的方法,如图5所示,包括以下步骤:
步骤501,接收端接收第五预设数量字节的数据,将接收到的数据存储到第三存储区。
其中,第五预设数量字节为发送端发送的数据头、有效数据和校验码的长度之和。当发送端先发送高位数据时,接收端可以将先接收到的数据作为高位数据存储到第三存储区,将后接收到的数据作为低位数据存储到第三存储区;当发送端先发送低位数据时,接收端可以将先接收到的数据作为低位数据存储到第三存储区,将后接收到的数据作为高位数据存储到第三存储区。
步骤502,接收端判断第三存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤503。
其中,预设格式可以为:按照从高位到低位的顺序,第三存储区中的数据依次包括数据头、有效数据和校验码,数据头的长度为第六预设数量字节,有效数据的长度为第七预设数量字节,且数据头的内容为预设内容,根据有效数据计算得到的校验值与校验码的内容相同。
接收端可以按照从高到低的顺序从第三存储区读取第六预设数量字节的数据,判断读取到的数据的内容是否为预设内容,如果不是预设内容,则确定存储的数据不符合预设格式;如果是预设内容,则继续从第三存储区读取第七预设数量字节的数据,根据读取到的第七预设数量字节的数据获取校验值,判断该校验值是否与第三存储区中剩余的数据的内容相同,如果相同,则确定第三存储区中的数据符合预设格式;如果不同,则确定第三存储区中的数据不符合预设格式。
步骤503,接收端将第三存储区中的数据存储到第四存储区,将第四存储区中的数据左移第八预设数量字节,将被移出第四存储区的数据补到移位后的剩余数据的右端,并将左移次数加1。
具体地,接收端可以按照各个字节数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中的剩余数据的右端。其中,第八预设数量字节可以为1字节,也可以大于1字节,左移次数的初始值可以为0。
步骤504,接收端判断第四存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤505。
具体地,接收端判断第四存储区中的数据是否符合预设格式的具体方法,可以与步骤502中接收端判断第三存储区中的数据是否符合预设格式的具体方法相同。
步骤505,接收端判断左移次数是否小于预设次数,如果小于预设次数,则返回步骤503;否则,执行步骤506。
其中,当第八预设数量字节为1字节时,预设次数的取值可以为第四存储区存储的数据的字节数减1得到的结果。
步骤506,接收端将第三存储区中最先接收到的第九预设数量字节的数据丢弃,从发送端接收第九预设数量字节的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并返回步骤202。
具体地,接收端可以将接收到的第九预设数量字节的数据存储到第三存储区中的已有数据的右端或左端,接收端将第九预设数量字节的数据存储到第三存储区的方式,可以与接收端将第五预设数量字节的数据存储到第三存储区的方式相同。其中,第九预设数量字节可以为1字节,也可以大于1字节。
本发明实施例在接收到的数据不符合预设格式时,通过对接收到的数据进行移位以实现对该数据的重新组合,以使组合后的数据符合预设格式,可以在预定长度数据对应的时间内将数据接收完毕,缩短了数据接收时间,提高了数据接收速度。
需要说明的是,在本发明的其他实施方式中,接收端也可以将第四存储区中的数据右移第十预设数量字节,将被移出的数据补到第四存储区中的剩余数据的左端。具体地,接收端可以按照各个字节数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中与已有数据相邻的位置,即,已有数据的左端,并继续判断第四存储区中的数据是否符合预设格式。同样可以实现本发明的发明目的。
在本发明的其他实施方式中,可以将第四存储区中的数据定义为一个循环队列,当第四存储区中的数据不符合预设格式时,则将该循环队列的指针向预设方向移位第八预设数量字节,将移位次数加1,并判断移位后的循环队列中的数据是否符合预设格式,如不符合,则继续将该循环队列的指针向预设方向移位第八预设数量字节,直到移位后的循环队列中的数据符合预设格式,或者移位次数大于或等于预设次数,则将第三存储区中最先接收到的第九预设数量字节的数据丢弃,从发送端接收第九预设数量字节的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并继续判断第三存储区中的数据是否符合预设格式。
在本发明的其他实施方式中,发送端发送的数据中包括:有效数据和校验码,数据总长度为第五预设数量字节,有效数据的长度为第七预设数量字节。相应地,预设格式可以具体为:按照从高位到低位的顺序,数据依次包括有效数据和校验码,有效数据的长度为第七预设数量字节,且根据有效数据计算得到的校验值与校验码的内容相同。
实施例六
如图6所示,为本发明实施例六中的一种处理传输数据的装置结构图,包括接收模块610、第一判断模块620、第二判断模块650、第一获取模块630、第二获取模块640、第三获取模块660、丢弃模块670和拼接模块680,其中,
接收模块610,用于接收第一预设长度的数据,将接收到的数据存储到第一存储区;在第一判断模块620判断所述第一存储区中最后接收到的第一预设长度的数据不是数据头时,继续接收第十一预设长度的数据,将接收到的数据存储到所述第一存储区,并触发第一判断模块620进行判断;在所述第一判断模块620判断所述第一存储区中最后接收到的第一预设长度的数据是数据头时,继续接收第二预设长度的数据并存储到第二存储区;在第二判断模块650判断需要接收的剩余数据长度大于零时,根据所述需要接收的剩余数据长度,继续接收数据,将接收到的数据存储到所述第二存储区,并触发拼接模块680进行拼接。
具体地,接收模块610,具体用于继续接收长度为所述需要接收的剩余数据长度的数据。
第一判断模块620,用于判断第一存储区中最后接收到的第一预设长度的数据是否为数据头。
第一获取模块630,用于根据第二存储区中的第三预设长度的数据,获取数据长度。
具体地,第一获取模块630,具体用于读取所述第二存储区中最后接收到的或者最先接收到的第三预设长度的数据的内容,将该内容作为所述数据长度。
第二获取模块640,用于根据需要接收的校验码的长度、所述第一存储区中除所述数据头之外的其他数据的长度和所述数据长度,获取需要接收的剩余数据长度。
具体地,第二获取模块640,具体用于将所述校验码的长度和所述数据长度之和,减去所述第一存储区中除所述数据头之外的其他数据的长度,得到所述需要接收的剩余数据长度。
第二判断模块650,用于对所述需要接收的剩余数据长度进行判断,并在所述需要接收的剩余数据长度为零时,触发所述拼接模块680进行拼接。
第三获取模块660,用于在所述第二判断模块650判断需要接收的剩余数据长度小于零时,根据所述校验码的长度、所述第一存储区中除所述数据头之外的其他数据的长度和所述数据长度,获取丢弃数据长度。
具体地,第三获取模块660,具体用于将所述第一存储区中除所述数据头之外的其他数据的长度,减去所述校验码的长度和所述数据长度之和,得到所述丢弃数据长度。
丢弃模块670,用于根据所述丢弃数据长度,将所述第一存储区和/或所述第二存储区中的部分数据丢弃,并触发拼接模块680进行拼接。
具体地,丢弃模块670,具体用于:
对所述第一存储区中最先接收的、长度为所述丢弃数据长度的数据进行丢弃;
或者,
对所述第二存储区中最后接收到的、长度为所述丢弃数据长度的数据进行丢弃;
对所述第一存储区中最先接收的、长度为第四预设长度的数据进行丢弃,对所述第二存储区中最后接收到的、长度为所述丢弃数据长度与所述第四预设长度之差的数据进行丢弃,所述第四预设长度小于所述丢弃数据长度。
拼接模块680,用于对所述第一存储区和所述第二存储区中的数据进行拼接。
具体地,拼接模块680,具体用于按照所述第一存储区中的数据头、所述第二存储区中的数据、所述第一存储区中除所述数据头之外的其他数据的顺序,对所述第一存储区和所述第二存储区中的数据进行拼接。
本发明实施例在接收到数据头和数据长度之后,根据该数据长度以及在接收到数据头之前接收并存储的数据的长度,确定是否继续接收数据,并对接收到的数据进行拼接,能够减少数据接收时间,提高数据接收速度。
实施例七
如图7所示,为本发明实施例七中的一种处理传输数据的装置结构图,包括:
接收模块710,用于接收第五预设长度的数据,将接收到的数据存储到第三存储区。
第一判断模块720,用于判断所述第三存储区中的数据是否符合预设格式。
其中,预设格式具体为:
按照从高位到低位的顺序,所述数据依次包括数据头、有效数据和校验码,所述数据头的长度为第六预设长度,所述有效数据的长度为第七预设长度,且所述数据头的内容为预设内容,根据所述有效数据计算得到的校验值与所述校验码的内容相同;
或者,
按照从高位到低位的顺序,所述数据依次包括有效数据和校验码,所述有效数据的长度为第七预设长度,且根据所述有效数据计算得到的校验值与所述校验码的内容相同。
处理模块730,用于在第一判断模块720判断所述第三存储区中的数据不符合预设格式时,对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;
或者,在第一判断模块720判断所述第三存储区中的数据不符合预设格式时,将所述第三存储区中的数据存储到第四存储区,对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。
具体地,处理模块730,具体用于将所述第四存储区中的数据向预设方向移位第八预设长度,将被移出所述第四存储区的数据补到移位后的剩余数据的所述预设方向的反方向的一端;
或者,
将由所述第四存储区中的数据构成的循环队列的指针向预设方向移位第八预设长度。
上述装置,还可以进一步包括计数模块740和第二判断模块750,其中,
计数模块740,用于在处理模块730对所述第三存储区中的数据的顺序进行调整之后,将移位次数加1,并触发所述第一判断模块720判断调整后的所述第三存储区中的数据是否符合预设格式;所述移位次数的初始值为0。
第二判断模块750,用于在第一判断模块720判断调整后的所述第三存储区中的数据不符合预设格式时,判断所述移位次数是否小于预设次数,并在所述移位次数小于预设次数时,触发处理模块730对所述第三存储区中的数据的顺序进行调整。
或者,
计数模块740,用于在处理模块730对所述第四存储区中的数据的顺序进行调整之后,将移位次数加1,并触发所述第一判断模块720判断调整后的所述第四存储区中的数据是否符合预设格式;所述移位次数的初始值为0。
相应地,第二判断模块750,用于在第一判断模块720判断调整后的所述第四存储区中的数据不符合预设格式时,判断所述移位次数是否小于预设次数,并在所述移位次数小于预设次数时,触发处理模块730对所述第四存储区中的数据的顺序进行调整。
上述装置,还可以进一步包括:
丢弃模块760,用于在所述移位次数不小于所述预设次数时,将所述第三存储区中最先接收到的第九预设长度的数据丢弃;
相应地,上述接收模块710,还用于接收第九预设长度的数据,将接收到的数据存储到所述第三存储区中与已有数据相邻的位置,并触发所述第一判断模块720判断所述第三存储区中的数据是否符合预设格式。
本发明实施例在接收到的数据不符合预设格式时,通过对接收到的数据的顺序进行调整,从而对接收到的数据进行重新组合,以使组合后的数据符合预设格式,可以在预定长度数据对应的时间内将数据接收完毕,缩短了数据接收时间,提高了数据接收速度。
实施例八
如图8所示,为本发明实施例八中的一种处理传输数据的装置结构图,包括接收模块810、第一判断模块820、第二判断模块860、第三判断模块880、确定模块830、拼接模块840、划分模块850、重组模块870和替换模块890,其中,
接收模块810,用于接收第一预设长度的数据,将接收到的数据存储到第七存储区;在第一判断模块820判断所述第七存储区中最后接收到的第一预设长度的数据不是数据头时,继续接收第二预设长度的数据,将接收到的数据存储到所述第七存储区中,并触发第一判断模块820进行判断;根据确定模块830确定出的需要接收的剩余数据长度继续接收数据,将接收的数据存储到第八存储区;在第二判断模块860的判断结果为否时,根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包。
具体地,接收模块810,具体用于从所述不符合预设格式的数据包中读取位置最靠前或最先接收到的、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,并接收第六预设长度的数据,判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述获取的编号,如果是,则继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述获取的编号对应的数据包;如果不是,则继续接收第九预设长度的数据,并继续判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述获取的编号,直到最后接收到的第六预设长度的数据的内容为数据头的内容和上述获取的编号时,继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述获取的编号对应的数据包。
第一判断模块820,用于判断所述第七存储区中最后接收到的第一预设长度的数据是否为数据头。
确定模块830,用于在第一判断模块820判断所述第七存储区中最后接收到的第一预设长度的数据是数据头时,确定所述需要接收的剩余数据长度。
拼接模块840,用于对所述第七存储区和所述第八存储区中的数据进行拼接。
具体地,上述确定模块830,具体用于将所述传输数据的总长度减去所述第七存储区中的数据的长度,得到所述需要接收的剩余数据长度;
相应地,上述拼接模块840,具体用于按照所述第七存储区中的数据头、所述第八存储区中的数据、所述第七存储区中除所述数据头之外的其他数据的顺序,对所述第七存储区和所述第八存储区中的数据进行拼接。
或者,上述确定模块830,具体用于将所述传输数据的总长度减去所述第一预设长度,得到所述需要接收的剩余数据长度;
相应地,上述拼接模块840,具体用于按照所述第七存储区中的数据头、所述第八存储区中的数据的顺序,对所述第七存储区中的数据头和所述第八存储区中的数据进行拼接。
划分模块850,用于根据数据头的位置,将拼接模块840拼接得到的数据划分为多个长度为第三预设长度的、以数据头为起始位置的数据包,并将各个数据包存储到第九存储区。
第二判断模块860,用于判断所述第九存储区中的数据包是否均符合预设格式,在判断结果为是时,触发重组模块870进行重组。
具体地,第二判断模块860,具体用于:
从所述数据包中读取位置最靠前或最先接收到的、第一预设长度的数据,判断读取到的数据的内容是否为预设内容;
如果不是预设内容,则确定所述数据包不符合预设格式;
如果是预设内容,则继续从所述数据包读取第四预设长度的数据,根据最后读取的第五预设长度的数据获取校验值,判断该校验值是否与所述数据包中剩余的数据的内容相同,如果相同,则确定所述数据包符合预设格式;如果不同,则确定该数据包不符合预设格式。
重组模块870,用于按照各个数据包所包含的编号,对所述第九存储区中的数据包进行重组。
具体地,重组模块870,可以用于从各个数据包中读取位置最靠前或最先接收到的、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取该数据包对应的编号,并根据获取的编号的大小,对与该编号对应的数据包所包含的有效数据进行排序。
第三判断模块880,用于对重新接收的数据包进行判断。
替换模块890,用于在第三判断模块880判断所述重新接收的数据包均符合预设格式时,根据所述重新接收的数据包所包含的编号,将所述第九存储区中对应的数据包替换为所述重新接收的数据包,并触发重组模块870进行重组。
具体地,替换模块890,具体用于从所述重新接收的数据包中读取位置最靠前或最先接收到的、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从所述第九存储区中查询数据头和编号分别与所述重新接收的数据包的数据头和上述获取的编号相同的数据包,将查询到的数据包替换为所述重新接收的数据包。
上述接收模块810,还用于在第三判断模块880判断所述重新接收的数据包均不符合预设格式时,根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包;
相应地,上述替换模块890,还用于在第三判断模块880判断所述重新接收的数据包中存在部分符合预设格式的数据包时,则根据所述符合预设格式的数据包所包含的编号,将所述第九存储区中对应的数据包替换为所述符合预设格式的数据包,并触发接收模块810根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包。
具体地,替换模块890,具体用于从所述符合预设格式的数据包中读取位置最靠前或最先接收到的、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从所述第九存储区中查询数据头和编号分别与所述符合预设格式的数据包的数据头和上述获取的编号相同的数据包,并将查询到的数据包替换为所述符合预设格式的数据包。
上述装置,还包括:
计数模块800,用于在第二判断模块860的判断结果为否时,将错误次数加1,所述错误次数的初始值为零;在第三判断模块880判断所述重新接收的数据包均不符合预设格式,将所述错误次数加1;在第三判断模块880判断所述重新接收的数据包中存在部分符合预设格式的数据包,将所述错误次数加1。
相应地,上述接收模块810,具体用于在所述错误次数不大于预设次数时,根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包。
本发明实施例提供的分组传输方案中,在数据包出错时,根据该数据包所包含的数据头和编号,重新接收对应的数据包,能够减少数据接收时间,提高数据接收速度和数据传输的成功率。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (12)

1.一种处理传输数据的方法,其特征在于,包括以下步骤:
①、接收第五预设长度的数据,将接收到的数据存储到第三存储区;
②、判断所述第三存储区中的数据是否符合预设格式,如果不符合预设格式,则执行步骤③或者④;如果符合预设格式,则结束流程;
③、对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;
④、将所述第三存储区中的数据存储到第四存储区;
⑤、对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。
2.如权利要求1所述的方法,其特征在于,对所述第三存储区中的数据的顺序进行调整之后,还包括:
将移位次数加1,判断调整后的所述第三存储区中的数据是否符合预设格式;
如果不符合预设格式,则在所述移位次数小于预设次数时,返回步骤③,所述移位次数的初始值为0;
如果符合预设格式,则结束流程。
3.如权利要求1所述的方法,其特征在于,对所述第四存储区中的数据的顺序进行调整之后,还包括:
将移位次数加1,判断调整后的所述第四存储区中的数据是否符合预设格式;
如果不符合预设格式,则在所述移位次数小于预设次数时,返回步骤⑤,所述移位次数的初始值为0;
如果符合预设格式,则结束流程。
4.如权利要求3所述的方法,其特征在于,当判断调整后的所述第四存储区中的数据不符合预设格式之后,还包括:
判断所述移位次数是否小于预设次数;
如果所述移位次数小于所述预设次数,则返回步骤⑤;
如果所述移位次数不小于所述预设次数,将所述第三存储区中最先接收到的第九预设长度的数据丢弃,从发送端接收第九预设长度的数据,将接收到的数据存储到所述第三存储区中与已有数据相邻的位置,并返回步骤②。
5.如权利要求1所述的方法,其特征在于,对所述第四存储区中的数据的顺序进行调整,具体为:
将所述第四存储区中的数据向预设方向移位第八预设长度,将被移出所述第四存储区的数据补到移位后的剩余数据的所述预设方向的反方向的一端;
或者,
将由所述第四存储区中的数据构成的循环队列的指针向预设方向移位第八预设长度。
6.如权利要求1所述的方法,其特征在于,所述预设格式具体为:
按照从高位到低位的顺序,所述数据依次包括数据头、有效数据和校验码,所述数据头的长度为第六预设长度,所述有效数据的长度为第七预设长度,且所述数据头的内容为预设内容,根据所述有效数据计算得到的校验值与所述校验码的内容相同;
或者,
按照从高位到低位的顺序,所述数据依次包括有效数据和校验码,所述有效数据的长度为第七预设长度,且根据所述有效数据计算得到的校验值与所述校验码的内容相同。
7.一种处理传输数据的装置,其特征在于,包括:
接收模块,用于接收第五预设长度的数据,将接收到的数据存储到第三存储区;
第一判断模块,用于判断所述第三存储区中的数据是否符合预设格式;
处理模块,用于在所述第一判断模块判断所述第三存储区中的数据不符合预设格式时,对所述第三存储区中的数据的顺序进行调整,并在调整后的所述第三存储区中的数据符合预设格式时,结束流程;
或者,在所述第一判断模块判断所述第三存储区中的数据不符合预设格式时,将所述第三存储区中的数据存储到第四存储区,对所述第四存储区中的数据的顺序进行调整,并在调整后的所述第四存储区中的数据符合预设格式时,结束流程。
8.如权利要求7所述的装置,其特征在于,还包括:
计数模块,用于在所述处理模块对所述第三存储区中的数据的顺序进行调整之后,将移位次数加1,并触发所述第一判断模块判断调整后的所述第三存储区中的数据是否符合预设格式;所述移位次数的初始值为0;
第二判断模块,用于在所述第一判断模块判断调整后的所述第三存储区中的数据不符合预设格式时,判断所述移位次数是否小于预设次数,并在所述移位次数小于预设次数时,触发所述处理模块对所述第三存储区中的数据的顺序进行调整。
9.如权利要求7所述的装置,其特征在于,还包括:
计数模块,用于在所述处理模块对所述第四存储区中的数据的顺序进行调整之后,将移位次数加1,并触发所述第一判断模块判断调整后的所述第四存储区中的数据是否符合预设格式;所述移位次数的初始值为0;
第二判断模块,用于在所述第一判断模块判断调整后的所述第四存储区中的数据不符合预设格式时,判断所述移位次数是否小于预设次数,并在所述移位次数小于预设次数时,触发所述处理模块对所述第四存储区中的数据的顺序进行调整。
10.如权利要求9所述的装置,其特征在于,还包括:
丢弃模块,用于在所述移位次数不小于所述预设次数时,将所述第三存储区中最先接收到的第九预设长度的数据丢弃;
所述接收模块,还用于继续接收第九预设长度的数据,将接收到的数据存储到所述第三存储区中与已有数据相邻的位置,并触发所述第一判断模块判断所述第三存储区中的数据是否符合预设格式。
11.如权利要求7所述的装置,其特征在于,
所述处理模块,具体用于将所述第四存储区中的数据向预设方向移位第八预设长度,将被移出所述第四存储区的数据补到移位后的剩余数据的所述预设方向的反方向的一端;
或者,
将由所述第四存储区中的数据构成的循环队列的指针向预设方向移位第八预设长度。
12.如权利要求7所述的装置,其特征在于,所述预设格式具体为:
按照从高位到低位的顺序,所述数据依次包括数据头、有效数据和校验码,所述数据头的长度为第六预设长度,所述有效数据的长度为第七预设长度,且所述数据头的内容为预设内容,根据所述有效数据计算得到的校验值与所述校验码的内容相同;
或者,
按照从高位到低位的顺序,所述数据依次包括有效数据和校验码,所述有效数据的长度为第七预设长度,且根据所述有效数据计算得到的校验值与所述校验码的内容相同。
CN201510102835.2A 2012-06-07 2012-06-07 一种处理传输数据的方法和装置 Pending CN104734810A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510102835.2A CN104734810A (zh) 2012-06-07 2012-06-07 一种处理传输数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510102835.2A CN104734810A (zh) 2012-06-07 2012-06-07 一种处理传输数据的方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201210187236.1A Division CN102710381B (zh) 2012-06-07 2012-06-07 一种处理传输数据的方法和装置

Publications (1)

Publication Number Publication Date
CN104734810A true CN104734810A (zh) 2015-06-24

Family

ID=53458285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510102835.2A Pending CN104734810A (zh) 2012-06-07 2012-06-07 一种处理传输数据的方法和装置

Country Status (1)

Country Link
CN (1) CN104734810A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105356996A (zh) * 2015-12-14 2016-02-24 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN109686316A (zh) * 2019-03-04 2019-04-26 上海大学 一种数字扫描电路
CN110971387A (zh) * 2019-12-10 2020-04-07 上海邦邦机器人有限公司 一种数据传输处理方法、发送设备和接收设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090103636A1 (en) * 2005-12-01 2009-04-23 Thomson Licensing, Llc. Apparatus and Method for Decoding Low Density Parity Check Coded Signals
CN101789069A (zh) * 2009-10-30 2010-07-28 北京飞天诚信科技有限公司 时序控制方法和读卡器
CN101797849A (zh) * 2010-01-07 2010-08-11 浙江大学 基于FPGA的数据块按bit旋转装置及方法
CN101990140A (zh) * 2010-11-17 2011-03-23 中兴通讯股份有限公司 数据流定帧方法及装置
CN102118214A (zh) * 2009-12-30 2011-07-06 上海申瑞电力科技股份有限公司 检测同步串行通信数据通信可靠性的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090103636A1 (en) * 2005-12-01 2009-04-23 Thomson Licensing, Llc. Apparatus and Method for Decoding Low Density Parity Check Coded Signals
CN101789069A (zh) * 2009-10-30 2010-07-28 北京飞天诚信科技有限公司 时序控制方法和读卡器
CN102118214A (zh) * 2009-12-30 2011-07-06 上海申瑞电力科技股份有限公司 检测同步串行通信数据通信可靠性的方法
CN101797849A (zh) * 2010-01-07 2010-08-11 浙江大学 基于FPGA的数据块按bit旋转装置及方法
CN101990140A (zh) * 2010-11-17 2011-03-23 中兴通讯股份有限公司 数据流定帧方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105356996A (zh) * 2015-12-14 2016-02-24 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN105356996B (zh) * 2015-12-14 2018-11-09 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN109686316A (zh) * 2019-03-04 2019-04-26 上海大学 一种数字扫描电路
CN110971387A (zh) * 2019-12-10 2020-04-07 上海邦邦机器人有限公司 一种数据传输处理方法、发送设备和接收设备

Similar Documents

Publication Publication Date Title
US20170300595A1 (en) Data packet extraction method and apparatus
CN102377521B (zh) 用于执行前向纠错的系统和方法
US7870466B2 (en) Parallel cyclic code generation device and parallel cyclic code error detection device
CN100508404C (zh) 块编码器中的分段机制
KR20070017159A (ko) 디지털 데이터 패킷의 송신 방법과 그러한 방법을 구현하는디바이스
KR101118194B1 (ko) 손실된 패킷 재건을 위한 방법 및 상기 방법을 수행하기 위한 디바이스
CN104734810A (zh) 一种处理传输数据的方法和装置
CN107040334A (zh) 用于通信网络的丢失复原协议
CN108966283B (zh) 一种遥测数据压缩传输方法、装置和计算机可读介质
US9866350B2 (en) Streaming media packet processing method, WiFi chip, and mobile terminal
CN102710381B (zh) 一种处理传输数据的方法和装置
CN110545161B (zh) 一种具有冗余的多媒体数据实时传输方法
US7516393B2 (en) System and method of error detection for unordered data delivery
CN109391605B (zh) 数据传输方法、装置及系统
CN104471888B (zh) 突发数据块中的空闲块idle的处理方法、设备及系统
CN112565105A (zh) 一种降低时间敏感帧转发时延的方法、装置及设备
CN112887054A (zh) 一种基于长度转义的数据流封包方法、解包方法及系统
CN112735450B (zh) 基于语音通道传输数据的方法、装置、存储介质及设备
WO2022099967A1 (zh) 蓝牙接收机的译码实现方法
EP3142277B1 (en) Fault tolerance method and apparatus for microwave transmission and computer readable storage medium
CN102136888B (zh) 一种子块解交织输入数据处理方法及装置
US9000959B2 (en) Turbo encoder apparatus
JP2016201770A (ja) Crc符号演算回路、及びその方法並びに半導体装置
CN112100169B (zh) 数据库交互数据编码方法及装置
JP2011211353A (ja) Crc演算回路

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20150624