我正在使用寄存器描述信息解析文件,并试图围绕这些寄存器描述和位字段构建一个工具,用于读取/写入该器件上的寄存器。我有一个看起来像这样的文本文件(这个文件/设备有数千个条目/寄存器):
# 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_global变量?(请参阅下面示例中的变量'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
答案 0 :(得分:1)
由于您正在使用头文件的内容初始化类,我建议在构造函数内部执行字典的init( __ init __ )。如果你想支持不同的头文件,那么让构造函数接受一个参数,该参数是指向你想要读入的头文件的路径。
让该词典成为班级水平很好 - 它是班上的一员。
根据OP的评论进行编辑:
要使用此方法从另一个文件初始化字典,您首先import
该类,然后从另一个文件中实例化它。
即,假设其他文件与 myDevice.py 位于同一目录中,您可以执行以下操作:
import myDevice
device = myDevice('/home/user/foo.header')
然后,您在类中定义的构造函数将读入指定的标题。