用已解析的元组初始化字典

2024-10-01 11:41:28 发布

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

我正在解析一个包含寄存器描述信息的文件,并试图围绕这些寄存器描述和位字段构建一个工具,用于读取/写入该设备上的寄存器。我有一个这样的文本文件(这个文件/设备有成千上万个条目/寄存器):

# Note 'Register> 0xXX' - Register Offset Address
Register> 0x00=Configuration ID
15:0=Vendor ID
31:16=Device ID

Register> 0x04=Class Code and Revision ID
0=TMODE
7:1=Revision ID
15:8=Register-Level Programming Interface
23:16=Sub-Class code
32:24=Base Class Code

Register> 0x08 ....
...

我已将此文件解析为一个数据结构,其中包含寄存器地址(例如“0x00”)、寄存器描述(例如“配置ID”)、位字段(例如“15:0”)及其描述(例如“供应商ID”)。你知道吗

我正在构建一个工具,它需要根据寄存器地址访问这些信息,所以我考虑将所有这些寄存器描述打印到一个头文件中,以初始化这样的字典。你知道吗

regDict={}
regBitFieldList=[]
regBitFieldList.append( ('15:0','Vendor ID') )
regBitFieldList.append( ('31:16','Device ID') )
# ex regDict[0x00]=('Configuration ID', [('15:0','Vendor ID'), ('31:16','Device ID')])
regDict[regOffsetAddress]=(regDescription, regBitFieldList)

regBitFieldList=[]
regBitFieldList.append( NEXT REG INFO)
regDict[nextRegAddress]= (nextRegDesc, regBitFieldList)
....
...

我有一个表示设备的类,这样我就可以通过这个类进行读注册、写注册,我想知道我是否要在另一个文件中初始化这个字典,并将数据导入class\u全局变量?(参见下面示例中的变量“myDeviceDictionary”)。你知道吗

Class myDevice():
    myDeviceDictionary = {}  ## Import dictionary initialization to this variable?
    __init__(self):
        initialize stuff.
    writeRegister(regAddress, byteString_4):
        Write 32-bits to a register at regAdress from thisDevice
    readRegister(regAddress):
        Read 32-bits from a register at regAddress from thisDevice

Tags: 文件工具fromregister信息iddevice寄存器
1条回答
网友
1楼 · 发布于 2024-10-01 11:41:28

因为您要用头文件的内容初始化类,所以我建议您在构造函数内部进行字典初始化(\uu init\uuuuu)。如果您想支持不同的头文件,那么让构造函数接受一个参数,该参数是指向您要读入的头文件的路径。你知道吗

把字典放在班级级别是可以的,它是班级的一员。你知道吗

编辑并回复OP的评论:

要使用此方法从另一个文件初始化字典,首先import类,然后从另一个文件实例化它。你知道吗

即,假设另一个文件与位于同一目录中我的设备.py,您可以这样做:

import myDevice

device = myDevice('/home/user/foo.header')

然后在类中定义的构造函数将读取指定的头。你知道吗

相关问题 更多 >