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 변경만 하면 됩니다.)


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

2016년 12월 8일 목요일

Confluence 의 table을 csv(excel)로 export 하기

회사에서 Confluence(atlassian 의 S/W) 를 사용하고 있습니다. 

Wiki 로 프로젝트 관리, 정보공유 등을 (저렴한 가격으로)진행할 수 있어 최근 가장 유명한 S/W 로 알고 있고 정말 편리 합니다.

 Excel을 import 시켜도 Excel 화면을 화면에서 바로 볼 수 있어 유용하지만, Table 형태로 사용하는 경우도 있습니다.


그런 Table은 현재 Word 나 PDF 로만 export 가 가능하도록 되어 있습니다.

저의 경우 Table 형태로 된 데이터를 다루기에는 Excel 이 가장 편리한데 Excel 로 바로 export 할 수 없어서 불편함을 느끼고 있었습니다.


개선을 위해서 검색해 보니 html(confluence page 포함) 에서 table을 빼 내는 javascript Code를 공유해 준 블로그가 있어 적용을 해 보았는데 100% 만족 하였습니다.

사용 방법
1. 관련 자바 스크립트(Export To CSV)를 bookmark로 지정하고(Explorer 10이상)
    - 위 링크를 드래그 하여 bookmark로 등록 하면 됩니다.

2. 원하는 페이지에서 해당 bookmark 를 실행 시킵니다.

3. 해당 페이지의 Table 위에 export to csv 라는 링크가 생기고

4. 그 링크를 click 하면 Table이 csv 형태로 저장 됩니다.

(추가)
5. 해당 csv 를 click 하면 default 로 excel로 열리는데 한글은 깨져 있습니다.
6. notepad++ 등 다른 editor로 열면 한글이 살아 있습니다.
    -> 이 부분은 인코딩 문제인 것 같은데... 잘 몰라서 공부해야 할듯 합니다...
(코드)
7. 해당 코드는 원본 블로그에서 보실 수 있으며 위 bookmark로 지정한 링크에서도 보실 수 있습니다.

(161210)
8. csv 파일과 자동 연결되는 Excel 로 열면 한글이 깨져 있지만 Notepad++ 와 같은 에디터로 여니 깨지지 않았습니다. UTF-8로 되어있기 때문?
9. Notepad++ 로 연 상태에서 전체 텍스트를 복사한 다음 notepad를 새로 만들어서 붙여넣고 저장하면 새로 열었을 때 깨지지 않았습니다. 이는 window에서 파일을 만들면 자동으로 ms949 로 인코딩을 하기 때문? 입니다.