gpt4 book ai didi

python - ARINC429 构词法

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:04 24 4
gpt4 key购买 nike

作为序言,我使用 python 3 和位串库。

因此 Arinc429 字是 32 位数据字。

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

041

我可以通过以下方式在 python 中对此进行建模:

label = BitArray(oct='041')
print(label.bin)
>> 000100001

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

002

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

>> 000000010

接下来是数据字段,范围为 11-29 位。假设我想将纬度设置为伦敦的大致区域 (51.5072)。这就是我陷入困境的地方,因为 float 只能是 32/64 位长。

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

谢谢。

最佳答案

我认为您的方向是正确的,但您需要了解或决定数据字段的格式。

如果您想要表示 float 的 19 位在某处记录为 float ,那么请查看如何完成转换(因为这根本不是 float 的标准位数)。如果这些位是自由格式的,并且您可以选择编码和解码,那么只需选择合适的内容即可。

有一个偶尔使用的 16 位 float 标准,但如果您只想表示纬度,我会选择更简单的东西。由于它只能得到 0 到 360 之间的值,只需将其缩放为 0 到 2^19 之间的整数并存储该整数。

因此 51.5072 变为 (51.5072/360*(2**19)) = 75012

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

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

这将为您提供大约 0.0007 度的分辨率,这是您所能期望的最佳分辨率。要转换回来:

> latitude.uint*360.0/2**19
51.50665283203125

关于python - ARINC429 构词法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com