电文存储的事项

   GPS L1导航电文存储

1 电文存储数据方向: bit高位存储的是 电文低位(先发送的数据)

2 在bit位转换至整型int32时,如果使用 std::bitset 会发生 bit高低位倒序存储,建议使用按位与操作,保持原有顺序。word0 word1 word2 ->word10

同时在word 内部   bit29_pre   bit30_pre  bit0 bit1 bit2  ...bit30

3 word内部bit位的操作  循环仍然需要倒叙 完成 bit0  bit1  bit2  高位->低位的 数据存储

value  = 0;

 while ( i < size_length )

{

  value << 1;

  value = value + bit_strem(bit_phase + i);

  i ++ ;

}  

使用std::bitset 发生一次倒序后,bit拼帧,不需要倒序。按照倒序后的顺序拼帧。

但是对word 的拼帧还需要一次倒序,完成所有300bit的倒序,然后使用300-原有index 转换至倒序后每段信息的帧首;

 

2  电文解析 有两种类型  unsigned   类型 和  signed类型

unsigned类型  无符号类型相对简单一些

不需要判断第一位 符号位

主要描述  signed类型  原因 :发送的电文信息 受制于信息长度,符号位几乎不能时 类型的首位(例如  int64 只有符号位在63位 ,才不需要转换)

 判断第一符号位

int64 value = 0LL;

if bit_strem(bit_phase + 0) == 1

  value ^= 0xFFFFFFFFFFFFFFFF;

else

  value &= 0x0LL;

end

while (i < bit_size)

{

  value <<= 1;

  value &= 0xFFFFFFFFFFFFFFFELL;

  if(bit_stream[i] == 1)

  {

    value += 1LL

  }

  i+=;

}

 

posted on 2019-07-10 11:46  mercury34  阅读(171)  评论(0)    收藏  举报