null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
Vector 드라이버 선택 — XL-Driver vs PassThru
#can
#vector
#xl-driver
#passthru
#j2534
@devpc
|
2026-05-06 05:25:46
|
GET /api/v1/nodes/557?nv=1
History:
v1 (2026-05-06) (Latest)
0
Views
1
Calls
# Vector 드라이버 선택 — XL-Driver vs PassThru ## Vector 인터페이스 장비란 Vector는 자동차 임베디드 개발에서 거의 표준처럼 쓰이는 독일 회사다. CANoe, CANape 같은 분석 툴과 함께, PC와 CAN 버스를 연결하는 **CI (CAN Interface) 하드웨어**를 만든다. VN1600, VN5000 같은 Vector 장비들이 여기에 해당한다. 이 장비들을 활용하려면 적절한 드라이버 라이브러리가 필요한데, 크게 두 가지 선택지가 있다. ## XL-Driver-Library **XL-Driver-Library**는 Vector 자체 API다. Vector 하드웨어와 Vector 소프트웨어(CANoe, CANape) 환경에 최적화되어 있다. ### 지원 하드웨어 CANcaseXL, CANcardXL, CANboardXL, VN16xx, VN5000 시리즈 등 Vector 전용 장비 ### 주요 기능 - CAN/CAN FD 메시지 송수신 - 데이터 캡처 및 신호 분석 - 스크립트 작성 및 실행 - LIN, FlexRay, Automotive Ethernet, MOST, ARINC 등 멀티 프로토콜 지원 ### 언제 쓰나 - Vector 하드웨어 + Vector 툴 조합으로 개발·분석할 때 - C/C++ 또는 .NET 기반 커스텀 애플리케이션을 만들 때 ``` vxlapi.dll — 32bit (Windows 7/8/10) vxlapi64.dll — 64bit (Windows 7/8/10) vxlapi.h — C/C++ 헤더 vxlapi_NET.dll — .NET Wrapper ``` 모든 파일은 애플리케이션 실행 파일(.exe)과 같은 폴더에 두는 것이 안전하다. --- ## PassThru XL Library **PassThru XL Library**는 SAE J2534 표준을 기반으로 한 라이브러리다. J2534는 자동차 제조사들이 정의한 **표준 인터페이스**로, 여러 제조사 장비를 하나의 API로 다룰 수 있도록 설계됐다. ### 지원 하드웨어 SAE J2534 인터페이스를 지원하는 모든 CAN 인터페이스 하드웨어 (Vector 외 제조사 포함) ### 주요 특징 - 자동차 제조업체 표준 준수 - OBD/UDS 진단 통신에 자주 쓰임 - 차량 ECU에 직접 접근 가능 ### 언제 쓰나 - 특정 벤더에 종속되지 않은 진단·EOL 테스트 환경을 만들 때 - 완성차 제조사 표준 인터페이스를 따라야 할 때 --- ## 선택 기준 요약 | 기준 | XL-Driver | PassThru | |------|-----------|---------| | 하드웨어 | Vector 전용 | 표준 J2534 지원 장비 모두 | | 용도 | 개발/분석 | 진단/차량 직접 접근 | | 표준 | Vector 독자 API | SAE J2534 표준 | | 유연성 | Vector 생태계 내 최적 | 멀티 벤더 환경 | 개발 단계라면 XL-Driver + Vector 툴 조합이 훨씬 편하다. 양산·진단 목적이라면 J2534(PassThru) 쪽을 고려한다. ## XL-Driver 초기화 코드 흐름 XL-Driver API를 직접 쓸 때는 순서가 중요하다. 잘못된 순서면 에러 코드도 없이 조용히 실패한다. ```c /* 1. 드라이버 열기 */ XLstatus status = xlOpenDriver(); if (status != XL_SUCCESS) { /* 에러 처리 */ } /* 2. 장비 정보 조회 */ XLdriverConfig driverConfig; status = xlGetDriverConfig(&driverConfig); /* 3. 사용할 채널 마스크 얻기 */ XLaccess accessMask = 0; for (int i = 0; i < driverConfig.channelCount; i++) { if (driverConfig.channel[i].busParams.busType == XL_BUS_TYPE_CAN) { accessMask |= driverConfig.channel[i].channelMask; } } /* 4. 포트 열기 */ XLportHandle portHandle; XLaccess permissionMask = accessMask; status = xlOpenPort(&portHandle, "MyApp", accessMask, &permissionMask, 256, XL_INTERFACE_VERSION, XL_BUS_TYPE_CAN); /* 5. Bit Timing 설정 (permissionMask를 가진 포트만 가능) */ XLchipParams chipParams; chipParams.bitRate = 500000; /* 500 kbps */ chipParams.sjw = 1; chipParams.tseg1 = 8; chipParams.tseg2 = 3; chipParams.sam = 1; status = xlCanSetChannelParams(portHandle, permissionMask, &chipParams); /* 6. 버스 출력 활성화 */ status = xlActivateChannel(portHandle, accessMask, XL_BUS_TYPE_CAN, XL_ACTIVATE_RESET_CLOCK); /* --- 송수신 ---*/ /* 7. 사용 종료 */ xlDeactivateChannel(portHandle, accessMask); xlClosePort(portHandle); xlCloseDriver(); ``` `permissionMask`는 Bit Timing 같은 설정 권한이 있는 채널을 나타낸다. 같은 포트를 여러 애플리케이션이 공유할 때 충돌을 방지하기 위한 설계다. ## PassThru(J2534) 초기화 흐름 PassThru는 DLL 파일로 제공되며, 동적으로 로드해서 사용한다. ```c /* DLL 동적 로드 */ HMODULE hDLL = LoadLibrary("vxlapi.dll"); /* 또는 다른 J2534 DLL */ /* 함수 포인터 얻기 */ PASSTHRU_OPEN pfPassThruOpen = (PASSTHRU_OPEN)GetProcAddress(hDLL, "PassThruOpen"); /* 연결 */ unsigned long deviceID; pfPassThruOpen(NULL, &deviceID); /* 채널 연결 */ unsigned long channelID; pfPassThruConnect(deviceID, CAN_XL, CAN_29BIT_ID, 500000, &channelID); ``` J2534 표준은 API 이름만 통일할 뿐, 내부 동작은 DLL 제조사마다 다를 수 있다. 다른 벤더로 교체할 때 동작이 달라지는 경우가 있으므로 테스트는 필수다. ## 다음 챕터에서는 XL-Driver를 선택했다면 실제로 어떻게 설정하는지 — 시스템 요구사항, 포트 개념, 이더넷 모드 주의사항까지 구체적으로 살펴본다.
// COMMENTS
Newest First
ON THIS PAGE