ARINC429字结构

2024-10-03 17:18:38 发布

您现在位置:Python中文网/ 问答频道 /正文

作为序言,我使用了python3和bitstring库。在

所以Arinc429字是32位数据字。在

位1-8用于存储标签。比如说我想让单词设置纬度,根据标签docs,设置纬度是设置为八进制

041

我可以通过以下操作在python中建模:

^{pr2}$

接下来的两个位可以用来发送一个源,或者通过提供一个设备ID来扩展标签。设备ID是用十六进制表示的,我希望使用的是

002

再次,我将它添加到一个新的BitArray对象中,并将其转换为二进制

>> 000000010

接下来是数据字段,范围从位11到29。假设我要将纬度设置为伦敦的总面积(51.5072)。这就是我陷入困境的地方,因为浮动只能是32/64位长。在

这个词还有另外两个部分,但在我去之前,我只是想知道,如果我走的是正确的道路,或者偏离了你将如何构建这样一个单词?在

谢谢。在


Tags: 对象iddocs标签建模单词python3八进制
1条回答
网友
1楼 · 发布于 2024-10-03 17:18:38

我认为您的思路是正确的,但您需要知道或决定数据字段的格式。在

如果一个浮点数在某个地方被记录为一个浮点数,那么你就不想把它作为一个浮点数来表示。如果这些位是自由形式的,你可以选择编码和解码,然后选择适当的。在

有一个16位浮点的标准,偶尔会用到,但如果你只想表示一个纬度,我会选择更简单的方法。因为它只能从0到360,所以只需将其缩放为从0到2^19的整数并存储该整数。在

所以51.5072变成(51.5072/360*(2**19))=75012

然后将其存储为无符号整数

> latitude = BitArray(uint=75012, length=19)

这将使您获得大约0.0007度的分辨率,这是您可以期望的最佳分辨率。要转换回:

^{pr2}$

相关问题 更多 >