一种处理传输数据的方法和装置的制造方法_4

文档序号:8415354阅读:来源:国知局
,第六预设长度为3个字节,第七预设长度为I个字节时,则从该数据包读取位置最靠前的3个字节的数据“AA 4402”,根据其中最后读取到的、I个字节的数据“02”,获取该数据包对应的编号为“02”,且该编号对应的数据包所包含的有效数据为“01 02 03 04 05”。当数据包的内容为“AA 44 01
0203 03 06 08 BA”,第六预设长度为3个字节,第七预设长度为I个字节时,则从该数据包读取位置最靠前的3个字节的数据“AA 44 01”,根据其中最后读取到的、I个字节的数据“01”,获取该数据包对应的编号为“01”,且该编号对应的数据包所包含的有效数据为“02
0303 06 08”,根据编号“01”和“02”,可以将相应的有效数据排序为“02 03 03 06 08 0102 03 04 05”。
[0143]步骤407,将错误次数加I。
[0144]步骤408,判断错误次数是否大于预设次数,如果大于,则执行步骤409 ;否则,执行步骤410。
[0145]其中,错误次数的初始值为零。
[0146]步骤409,返回错误信息。
[0147]步骤410,根据不符合预设格式的数据包所包含的编号,重新接收对应的数据包。
[0148]具体地,可以从不符合预设格式的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,并接收第六预设长度的数据,判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述编号,如果是,则继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述编号对应的数据包;如果不是,则继续接收第九预设长度的数据,并继续判断最后接收到的第六预设长度的数据的内容是否为数据头的内容和上述编号,直到最后接收到的第六预设长度的数据的内容为数据头的内容和上述编号时,继续接收第八预设长度的数据,确定最后接收到的第三预设长度的数据为与上述编号对应的数据包。其中,第九预设长度可以为I字节,也可以为I比特,还可以为其他长度。
[0149]例如,当不符合预设格式的数据包的内容为“AA 44 02 02 02 03 04 05 EA”,该数据包对应的编号为“02”,第六预设长度为3个字节,第八预设长度为6个字节,第三预设长度为9个字节时,则继续接收3个字节的数据,判断最后接收到的3个字节的数据的内容是否为“AA 44 02”,如果是,则继续接收6个字节的数据,并确定最后接收到的9个字节的数据为与编号“02”对应的数据包;如果不是,则继续接收I个字节的数据,并继续判断最后接收到的3个字节的数据的内容是否为“AA 44 02”,直到最后接收到的3个字节的数据的内容为“AA 44 02”,继续接收6个字节的数据,并确定最后接收到的9个字节的数据为与编号“02”对应的数据包。
[0150]步骤411,判断重新接收的数据包是否均符合预设格式,如果是,则执行步骤414;否则,执行步骤412。
[0151]具体地,本步骤判断数据包是否符合预设格式的具体操作过程可以与步骤405判断数据包是否符合预设格式的具体操作过程相同。
[0152]步骤412,判断重新接收的数据包中是否存在符合预设格式的数据包,如果存在,则执行步骤413 ;否则,返回步骤407。
[0153]步骤413,根据符合预设格式的数据包所包含的编号,将第九存储区中对应的数据包替换为符合预设格式的数据包,并返回步骤407。
[0154]具体地,可以从符合预设格式的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从第九存储区中查询数据头和编号分别与上述数据包的数据头和编号相同的数据包,并将查询到的数据包替换为上述符合预设格式的数据包。
[0155]例如,当符合预设格式的数据包的内容为“AA 44 02 01 02 03 04 05 EA'该数据包对应的编号为“02”时,则从第九存储区中查询数据头和编号分别为“AA 44”和“02”的数据包,将查询到的数据包替换为“AA 44 02 01 02 03 04 05 EA”。
[0156]步骤414,根据重新接收的数据包所包含的编号,将第九存储区中对应的数据包替换为重新接收的数据包,并按照各个数据包所包含的编号,对第九存储区中的数据包进行重组。
[0157]具体地,可以从重新接收的数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,从第九存储区中查询数据头和编号分别与上述数据包的数据头和编号相同的数据包,将查询到的数据包替换为上述重新接收的数据包,并从第九存储区中的各个数据包中读取位置最靠前的(或最先接收到的)、第六预设长度的数据,根据其中最后读取到的、第七预设长度的数据的内容,获取编号,根据编号的大小对第九存储区中的数据包所包含的有效数据进行排序。
[0158]本发明实施例提供的分组传输方案中,在数据包出错时,根据该数据包所包含的数据头和编号,重新接收对应的数据包,能够减少数据接收时间,提高数据接收速度和数据传输的成功率。
[0159]需要说明的是,在本发明的其他实施方式中,第七存储区、第八存储区和第九存储区可以为同一存储区。
[0160]在本发明的其他实施方式中,也可以将传输数据的总长度减去第一预设长度,得到需要接收的剩余数据长度;相应地,可以按照第七存储区中的数据头、第八存储区中的数据的顺序,对第七存储区中的数据头和所述第八存储区中的数据进行拼接。
[0161]实施例五
[0162]在本发明实施例五中,发送端可以发送预设长度的数据,即,发送端与接收端预先约定需要传输的数据的长度,发送端发送的数据中包括:数据头、有效数据和校验码,数据总长度为第五预设数量字节,数据头的长度为第六预设数量字节,有效数据的长度为第七预设数量字节。本发明实施例五中的接收端处理传输数据的方法,如图5所示,包括以下步骤:
[0163]步骤501,接收端接收第五预设数量字节的数据,将接收到的数据存储到第三存储区。
[0164]其中,第五预设数量字节为发送端发送的数据头、有效数据和校验码的长度之和。当发送端先发送高位数据时,接收端可以将先接收到的数据作为高位数据存储到第三存储区,将后接收到的数据作为低位数据存储到第三存储区;当发送端先发送低位数据时,接收端可以将先接收到的数据作为低位数据存储到第三存储区,将后接收到的数据作为高位数据存储到第三存储区。
[0165]步骤502,接收端判断第三存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤503。
[0166]其中,预设格式可以为:按照从高位到低位的顺序,第三存储区中的数据依次包括数据头、有效数据和校验码,数据头的长度为第六预设数量字节,有效数据的长度为第七预设数量字节,且数据头的内容为预设内容,根据有效数据计算得到的校验值与校验码的内容相同。
[0167]接收端可以按照从高到低的顺序从第三存储区读取第六预设数量字节的数据,判断读取到的数据的内容是否为预设内容,如果不是预设内容,则确定存储的数据不符合预设格式;如果是预设内容,则继续从第三存储区读取第七预设数量字节的数据,根据读取到的第七预设数量字节的数据获取校验值,判断该校验值是否与第三存储区中剩余的数据的内容相同,如果相同,则确定第三存储区中的数据符合预设格式;如果不同,则确定第三存储区中的数据不符合预设格式。
[0168]步骤503,接收端将第三存储区中的数据存储到第四存储区,将第四存储区中的数据左移第八预设数量字节,将被移出第四存储区的数据补到移位后的剩余数据的右端,并将左移次数加I。
[0169]具体地,接收端可以按照各个字节数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中的剩余数据的右端。其中,第八预设数量字节可以为I字节,也可以大于I字节,左移次数的初始值可以为O。
[0170]步骤504,接收端判断第四存储区中的数据是否符合预设格式,如果符合预设格式,则结束流程;如果不符合预设格式,则执行步骤505。
[0171]具体地,接收端判断第四存储区中的数据是否符合预设格式的具体方法,可以与步骤502中接收端判断第三存储区中的数据是否符合预设格式的具体方法相同。
[0172]步骤505,接收端判断左移次数是否小于预设次数,如果小于预设次数,则返回步骤503 ;否则,执行步骤506。
[0173]其中,当第八预设数量字节为I字节时,预设次数的取值可以为第四存储区存储的数据的字节数减I得到的结果。
[0174]步骤506,接收端将第三存储区中最先接收到的第九预设数量字节的数据丢弃,从发送端接收第九预设数量字节的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并返回步骤202。
[0175]具体地,接收端可以将接收到的第九预设数量字节的数据存储到第三存储区中的已有数据的右端或左端,接收端将第九预设数量字节的数据存储到第三存储区的方式,可以与接收端将第五预设数量字节的数据存储到第三存储区的方式相同。其中,第九预设数量字节可以为I字节,也可以大于I字节。
[0176]本发明实施例在接收到的数据不符合预设格式时,通过对接收到的数据进行移位以实现对该数据的重新组合,以使组合后的数据符合预设格式,可以在预定长度数据对应的时间内将数据接收完毕,缩短了数据接收时间,提高了数据接收速度。
[0177]需要说明的是,在本发明的其他实施方式中,接收端也可以将第四存储区中的数据右移第十预设数量字节,将被移出的数据补到第四存储区中的剩余数据的左端。具体地,接收端可以按照各个字节数据被移出第四存储区的先后顺序,将被移出的数据依次存储到第四存储区中与已有数据相邻的位置,即,已有数据的左端,并继续判断第四存储区中的数据是否符合预设格式。同样可以实现本发明的发明目的。
[0178]在本发明的其他实施方式中,可以将第四存储区中的数据定义为一个循环队列,当第四存储区中的数据不符合预设格式时,则将该循环队列的指针向预设方向移位第八预设数量字节,将移位次数加1,并判断移位后的循环队列中的数据是否符合预设格式,如不符合,则继续将该循环队列的指针向预设方向移位第八预设数量字节,直到移位后的循环队列中的数据符合预设格式,或者移位次数大于或等于预设次数,则将第三存储区中最先接收到的第九预设数量字节的数据丢弃,从发送端接收第九预设数量字节的数据,将接收到的数据存储到第三存储区中与已有数据相邻的位置,并继续判断第三存储区中的数据是否符合预设格式。
[0179]在本发明的其他实施方式中,发送端发送的数据中包括:有效数据和校验码,数据总长度为第五预设数量字节,有效数据的长度为第七预设数量字节。相应地,预设格式可以具体为:按照从高位到低位的顺序,数据依次包括有效数据和校验码,有效数据的长度为第七预设数量字节,且根据有效数据计算得到的校验值与校验码的内容相同。
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1