我移植一個簡單的藍牙應用程序,這將在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