2016년 12월 29일 목요일

CANdb(.dbc file) python으로 parsing 하기

1. 개요
차량관련 업무를 하면 차량네트워크 통신(CAN, LIN, MOST, Ethernet 등)을 사용하게 되었습니다.
실제 H/W 를 물리지 않은 상태에서 Simulation 을 해야 할 때는 필수로 Vector 사에서 제공하는 S/W 인 CANoe 로 각 Node를 구성하고, 사용하는 통신에 맞는 H/W 를 연결하게 됩니다.
그리고 그 H/W 를 통해 Message(Signal로 구성) 를 Send(Tx), Receive(Rx) 를 하기 위하여 CANdb, IG block, CAPL Block 을 사용하게 됩니다.

이중 CANdb 는 일회적인 Message만이 아닌 Network 의 전반적인 주기적 통신을 포함합니다.

.dbc 파일 CANdb++ 로 본 것
2. 본론
Vector에서 무료로 제공하는 CANdb++ 를 사용하여 내용을 이해할 수 있는데 Message가 많아질 경우 한눈에 보이지 않는 것을 느껴 평소 하는대로 엑셀(xlsx 혹은 csv)에 모든 데이터를 넣어서 참조하고 싶었습니다.

.dbc 파일 notepad 로 본 것

해당 .dbc 파일은 text 로 구성되어 있고 내용을 보면 역시 구조화가 되어 있다는 것을 볼 수 있습니다.

그래서 Parsing을 하면 되겠다 라고 생각했지만 아무래도 시간이 많이 걸릴 것 같은데다 제대로 할 수 있을지 의문이 들긴 했습니다;

그래서 Google 검색을 하니 역시 누군가가 만들어 놨더라구요.






















package Github 링크
python package download

압출을 풀면 아래 내용이 나오며
python.exe setup.py install 명령을 통해













설치하면 여러가지 파일이 생성 되지만 지금 필요한 것만 소개하면
canconvert-script.py 파일 입니다.











3. 결론
.dbc 파일을 excel 혹은 csv 로 변경하고 싶으면 command line에서
"python.exe canconvert-script.py XXX.dbc XXX.csv"
이라고 명령을 주면

XXX.csv 파일이 생성 됩니다.

그 결과 원했던 대로 .dbc 파일 내용을 .csv 형태로 볼 수 있습니다.(.xlsx 은 csv->xlsx 변경만 하면 됩니다.)


전 검색하기 편해서 좋습니다.

댓글 1개: