发明名称 一种高效容错的数据采集方法
摘要 一种高效容错的数据采集方法,方法用流水线的方式处理卫星的大规模数据流,而循环缓冲是作为流水线的“装配车间”。循环缓冲能够巧妙地将卫星数传过程中的误码局限在一个缓冲的长度之内,提高鲁棒性。并且,该方法采用比特位指示每一个卫星行中的解压缩行缺失情况,采取索引解压缩行位置的方法替代实际拷贝操作,这些改进能够最大限度提高对卫星数据进行实时处理的能力。
申请公布号 CN103873199A 申请公布日期 2014.06.18
申请号 CN201410106229.3 申请日期 2014.03.20
申请人 中国资源卫星应用中心 发明人 李运伟;喻文勇;王小燕
分类号 H04L1/00(2006.01)I 主分类号 H04L1/00(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 庞静
主权项 一种高效容错的数据采集方法,其特征在于步骤如下:(1)建立循环缓冲区并初始化为0;该缓冲区的结构包括三个循环缓冲camId[LINEBUFLEN][WAYCOUNT];line_pin[LINEBUFLEN];line_ind[LINEBUFLEN];和数组last_line_per[WAYCOUNT];以及两个变量write_line,int finish_line,通过变量write_line和finish_line记录连续完整行的范围;其中,LINEBUFLEN代表缓冲区的长度,WAYCOUNT代表解压缩数据的路数;line_pin[]用于指示一个卫星行的完整情况,其中每个解压缩数据行根据自身的列号对应一个比特;(2)接收外部输入的多路解压缩数据,对每路解压缩数据进行帧同步处理;(3)从步骤(2)处理后的任一一路解压缩数据开始,读入解压缩数据行,将该行作为当前解压缩数据行;(4)识别当前解压缩数据行的行号和列号AuxSeq,用连续性对行号进行验证和纠错,得到正确的当前解压缩行的行号cur_line;(5)根据cur_line以及缓冲区的长度LINEBUFLEN,计算cur_line在循环缓冲区中的下标lineIndex;(6)判断line_ind[lineIndex]是否等于cur_line,若等于,则直接转步骤(7);若不等于,则line_pin[lineIndex]=0,line_ind[lineIndex]=cur_line,转步骤(7);(7)将line_pin[lineIndex]中的第AuxSeq列的比特置为1;(8)将当前解压缩数据行的位置记录在camId[lineIndex][AuxSeq]缓冲区中;(9)判断line_pin[lineIndex]中的比特是否全为1,若全为1,则转步骤(10),否则,读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(10)判断write_line+1是否等于cur_line,若等于,则转步骤(11);否则,转步骤(12);(11)令write_line=cur_line,判断write_line‑finish_line是否大于预设的阈值,若大于,则从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT;否则读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(12)从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT,令write_line=cur_line,finish_line=cur_line;读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4)。
地址 100094 北京市海淀区永丰产业基地丰贤东路5号