簡體   English   中英

如何在Python的struct中使用C ++ struct

[英]How to use C++ struct in struct in Python

我必須將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? 如果我嘗試from collections import namedTuple使用namedTuple from collections import namedTuple則會發生以下錯誤消息: no module called collections ,因此我希望盡可能避免使用該庫。

在下面的:

self.tag = tag_info
您正在為變量分配一個類。 我認為您打算這樣做:
 self.tag = tag_info() 
但是如果我理解正確,那么應該將其作為tag_info的列表,因此您實際需要的是:
 self.tag = [tag_info() for i in range(20)] 

同樣適用於:

 self.tags = tag_list() 

關於預期行為應該是什么,這有點令人困惑。 但看起來您需要創建20個tag_info實例。 另外,您需要使用()實例化實例。

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

class tag_list:
    def __init__(self):
        self.tag = [tag_info() for _ in range(20)]

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM