如何从python数组访问C结构

2024-06-08 17:46:09 发布

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

我是python新手,一直在努力学习它,只是为了这个特定的项目。我所做的是使用基本上是一个arduino克隆和一个NRf24收发器将下面的结构发送到空中。在

struct SENSOR{
  float sensor1;
  float sensor2;
  float sensor3;
};

struct HEADER{
  long type;
  long hops;
  long src;
  long ID;
  SENSOR sensor;
};

我用的是带NRf24的beaglebone black来接收它。在BBB上,收发器是由python驱动的(因为BBB和我使用的无线电已经有了(相对)大的代码库)。在

在arduino端,它显示结构的长度为28,这也是我在python端收到的结果。我搞不懂如何将存储在数组中的接收数据移动到可用格式中。在

python方面:

^{pr2}$

这是我在python端收到的消息

[1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 51, 51, 163, 64, 51, 51, 195, 64, 51, 51, 227, 64]

派往阿杜伊诺那边

header.type = 1;
header.hops = 2;
header.src = 3;
header.ID = 4;
header.sensor.sensor1 = 5.1;
header.sensor.sensor2 = 6.1;
header.sensor.sensor3 = 7.1;

我已经查看了ctypes库,可能还使用了unpack,但无法使其正常工作。谢谢你的帮助。在


Tags: typesensorfloat结构structarduinolongheader
1条回答
网友
1楼 · 发布于 2024-06-08 17:46:09

使用struct模块。在

首先,将整数(实际上是字节)值的数组转换为字符串表示,如下所示

''.join(chr(c) for c in recv_buffer)

…然后将该字符串传递给传递格式字符的struct.unpack函数,以指定如何将字符串解析为实际值。在

^{pr2}$

相关问题 更多 >