我移植一个简单的蓝牙应用程序,这将在L2CAP协议“魔术”分组到蓝牙设备..的Python等效C结构(移植的应用程序的形式C至蟒)
我有转换结构的一个问题对象在C蟒等效..
在C:
/* command types */
#define CFGBT_TYPE_SETREQ 0x00
#define CFGBT_TYPE_SETRES 0x01
#define CFGBT_TYPE_GETREQ 0x02
#define CFGBT_TYPE_GETRES 0x03
/* varid types */
#define CFG_VARIDT_UINT16 0x0000
#define CFG_VARIDT_UINT32 0x1000
#define CFG_VARIDT_STRING16 0x2000
typedef struct {
uint8_t type, status;
uint16_t varid;
uint8_t value[16];
} __attribute__((packed)) CFGBTFRAME;
static CFGBTFRAME c;
,然后在应用它的使用这样的:
/* set up */
c.type = CFGBT_TYPE_GETREQ;
c.varid = strtol(argv[3], NULL, 0);
c.status = 0;
memset(c.value, 0, 16);
/* send frame */
write(s, &c, sizeof(c));
你能指出我如何使用python构造相同的包/类结构的结构吗?
我知道我可能需要使用ctypes并创建“空”类,但是如何将所有这些结合在一起?
你只是想要一个与你的结构体保持相同值的类,或者你想拥有相同的内存结构吗?如果你知道你有哪个目标,这可能会有所帮助。 – rocksportrocker
我们不会为您编写代码。具体来说,你的问题是什么?你创建了一个'ctypes.Structure'的子类,你指定了这些字段,然后你''file_like_obj.write(yourobject)'填充了字段。 – agf
@agf我需要发送与C应用程序完全相同的数据包“数据”,因为接收设备只会等待那种数据包。如果没有,就没有答案..我是,不是等待代码..但是看到struct exaples转换为Python将是很好的,在linkt在哪里可以找到答案.. – Michal