如何在Python的结构中使用C ++结构

时间:2019-01-09 13:38:21

标签: python c++ micropython

我必须将C ++代码转换为Micro Python到Wipy平台。目前,我遇到了一些问题,尤其是从其他结构访问变量

C ++代码:

typedef struct {
    char id[100];
    int rssi;
} tag_info;

typedef struct {
    tag_info tag[20];
} tag_list;

typedef struct {
    int timestamp;
    tag_list tags;
    int heading;
    int airt;
} data_packet;

data_packet packet;

for (i = 0; i < total_amount_of_tags - 1; i++) {
            print_function("id", packet.tags.tag[i].id, destination); 
            print_function("rssi", packet.tags.tag[i].rssi, destination);
        }

我的MicroPython代码:

class tag_info:
    def __init__(self):
        self.id = ""
        self.rssi = 0

class tag_list:
    def __init__(self):
        self.tag = tag_info

class data_packet():
    def __init__(self):
        self.timestamp=0
        self.tags = tag_list
        self.heading=0
        self.airt=0

packet=data_packet()

for i in range(0, total_amount_of_tags -1)
    print_function('id',packet.tags.tag[i].id,destination)
    print_function("rssi", packet.tags.tag[i].rssi, destination); 

我的代码中无法访问tag [i]和其他变量的问题。在这种情况下,我应该使用继承还是namedTuple?如果我尝试使用namedTuple from collections import namedTuple,则会出现以下错误消息:no module called collections,因此,我希望尽可能避免使用该库

2 个答案:

答案 0 :(得分:3)

以下:

self.tag = tag_info
您正在为变量分配一个类。 我认为您打算这样做:
self.tag = tag_info()
但是如果我理解正确,那么应该将其作为tag_info的列表,因此您实际需要的是:
self.tag = [tag_info() for i in range(20)]

相同:

self.tags = tag_list()

答案 1 :(得分:2)

这对于预期的行为应该是有点混乱。但是看来您需要创建20个canvas.on("object:scaling", function(e){ var obj = e.target console.log(obj.width*obj.scaleX); console.log(obj.height* e.target.scaleY); }); 实例。另外,您还需要使用tag_info实例化实例。

()