National Instrument LIN Module 사용법.
마침 프로그램 새롭게 개발하는게 있어서 관련 자료를 올림.
일단 "LIN" 이라는 것을 이해해야 하는데 이것이 안들어본 사람들은 엄청나게 헷갈리는 타입의 통신일 수도 있습니다.
LIN 의 프레임의 종류는 여러가지가 있습니다만, 실제로 쓰게 되는것은 한 3개 정도 됩니다.
1. Full Frame 방식
- Header 와 Data 를 동시에 지정하여 날려주는 타입입니다. 쉽게 TCP 생각 하시면 됩니다.
주거니 받거니...
2. Header Response 방식
- Header 만 날려주면 (내부적으로) 자동으로 Data 들이 따라옵니다.
3. Error / Sleep
- 뭐 굳이 설명안해도 LIN 은 WakeUp 과 Sleep 을 반복하게 설계되어있습니다.
(결국 전력 소모를 줄이기 위해서 일정 시간 호출이 없으면 MICOM 이라던가 통신 수단들 자체가 저전력 모드로 가는것을 Sleep 이라고 부르는 것 같습니다. 그리고 WakeUp 역시 다른 수단이 필요없이 Packet 을 지속적으로 주게 되면 자동적으로 WakeUp 이 됩니다.)
뭐 일단 프레임 종류는 저렇게 됐습니다. 이제 중요한건 VisualBasic 에서 어떻게 다뤄야 봐야겠죠 ?
일단 소스 코드 나갑니다.
이 예제에서 사용된 api 들은 NI-CAN 라이브러리에 VB 예제들을 보면 기본적으로 들어있는
Module 파일들을 포함시켜 사용한 예제입니다.
Public LinTxRx As Long
Call ncOpenObject("LIN0", LinTxRx)
'// 속성 값 설정
Call ncSetAttribute(LinTxRx, NC_ATTR_BAUD_RATE, 4, BaudRate)
Call ncSetAttribute(LinTxRx, NC_ATTR_TERMINATION, 4, Term)
Call ncSetAttribute(LinTxRx, NC_ATTR_LIN_CHECKSUM_TYPE, 4, bCheckSum)
Call ncSetAttribute(LinTxRx, NC_ATTR_SELF_RECEPTION, 4, bSelfRec)
Call ncSetAttribute(LinTxRx, NC_ATTR_LOG_BUS_ERROR, 4, bBusErr)
'// 필자의 경우에는 bCheckSum 타입을 True 로 설정하지 않으면 Response Type 의 Data 가 따라붙지 않아서 고생하였음... bBusErr 항목도 영향을 미침..
'// 적용했었던 옵션 값
'// BaudRate - 19200
'// Term - 1
'// bCheckSum - 1
'// bSelfRec - 0
'// bBusErr - 0
'// -----------------
Call ncAction(LinTxRx, NC_OP_START, 0)
이 이후에는 포함된 API 예제들을 분석해보면 이제 LIN 통신이여 안녕~~
워쩌라고 ㅋㅋ
답글삭제@Rain - 2010/07/02 17:33
답글삭제어야 저거땜에 나 3일 고생했음 ㅋㅋㅋㅋㅋㅋㅋ