2014-06-23 2 views
1

파일을 구문 분석 중이며이 레지스터 설명과이 장치의 레지스터 읽기/쓰기 비트 필드에 대한 도구를 작성하려고합니다. 나는 그런 모습 텍스트 파일을했다 (수천 개의 항목이 있습니다 /이 파일/장치 등록) :구문 분석 된 데이터의 튜플로 사전을 초기화하십시오.

# 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) 
.... 
... 

I가 내가 readRegister이 writeRegister이 클래스를 통해 내가 을 궁금하네요 내가 다른 파일이 사전을 초기화하고 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

데이터 모음이 크고 복잡하면 SQL 데이터베이스 또는 이와 유사한 도구 사용을 고려해야합니다. 장기적으로 두통을 덜어 줄 수 있습니다. –

답변

1

당신이 헤더 파일의 내용으로 클래스를 초기화하고 있기 때문에, 나는 생성자 (__init__)의 내부 사전의 초기화를하고 추천 할 것입니다. 다른 헤더 파일을 지원하려면 생성자에게 읽어들이려는 헤더 파일을 가리키는 경로 인 인수를 사용하게하십시오.

해당 사전을 클래스 수준으로 유지하는 것이 좋습니다. 수업. 영업 이익의 의견에 응답

편집 :

다른 파일에서이 방법을 사용하여 사전을 초기화하려면, 당신은 import 첫번째 것 다음 클래스와는 다른 파일에서 인스턴스화.

myDevice.py, 당신은 같은 것을 할 수 있기 때문에, 다른 파일을 가정하면 같은 디렉토리에 있습니다

import myDevice 

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

을 그리고 당신은 클래스 내에서 정의 된 생성자는 지정된 읽을 것 머리글.

+0

다른 파일에서 어떻게 참조합니까? – Matt

+0

나는 당신이 요구하는 것을 따라갈 수 있을지 확신하지 못합니다. 다른 파일에서 클래스 인스턴스를 어떻게 참조합니까? – khampson

+0

다른 이름의 생성자에서이 사전을 초기화하고 싶습니다. – Matt

관련 문제