-
libTSCAN 예제 코드api 2026. 2. 5. 10:55
시작하기 전에
- 투썬은 두 종류의 API를 제공한다. TSMaster API와 libTSCAN API이다. 둘의 차이는 아래 표와 같다.
libTSCAN API TSMaster API 장점 1. x86/x64bit 지원 2. Windows 및 Linux 지원 Linux의 경우 libTSCANAPI.so를 사용해야 함 3. TSMaster에 종속되지 않음, 즉 TSMaster를 설치할 필요가 없음 4. C++ 런타임 라이브러리에 종속됨 1. x86/x64bit 지원 2. Windows 지원 3. API가 많음 TSMaster의 거의 모든 API를 사용할 수 있음 TSMaster.dll의 래핑된 버전임 단점 1. API가 적음 2. 투썬 하드웨어만 지원됨 3. 무료 1. Linux를 지원하지 않음 2. TSMaster에 종속됨. 즉, TSMaster를 설치해야 함. 즉, 유료 - libTSCAN와 투썬의 인터페이스 하드웨어를 사용하면 CAN (혹은 LIN 혹은 FlexRay) 메시지를 송수신할 수 있다. PC에서 1회 명령으로 하드웨어가 메시지를 주기적으로 전송하도록 할 수 있다. Transport Protocol도 구현되어 있다.
- libTSCAN을 사용하는 간단한 예제 코드를 작성하였다.

개요
- 프로그램
- 화면 구성
- 장치 연결
- CAN 송수신
- CAN-FD 송수신
- 주기 메시지 전송
- 필터 적용
- 2026-02-05 현재 작동하지 않는다. 투썬 본사에 작동하게 하는 방법을 문의해 두었다.
- 다채널 송수신
- 에러 프레임 처리
- 사용 방법
프로그램
- GUI는 아래 그림과 같다.

- 이 프로그램은 파이썬으로 작성되었다.
하드웨어
- Tosun CAN 인터페이스 장치 (2채널 또는 4채널)
- USB 포트
- CAN 통신 테스트를 위한 채널 간 물리적 연결 (예: CH0 ↔ CH1)

소프트웨어
- 운영체제: Windows 10/11
- Python: 3.12 이상
- 필수 패키지: PyQt6
- 드라이버: Tosun 장치 드라이버
Python 패키지 설치
pip install PyQt6 pip install libtscanapilibtscanapi는 pip 패키지로 설치되므로 작업 디렉토리에 별도 파일이 필요하지 않습니다.명령줄에서 실행
python CAN_Demo_GUI.py화면 구성
좌측 패널
- 예제 리스트: 6가지 CAN 통신 예제 선택
- 예제 파라미터:
- 채널 수: 2채널 또는 4채널 선택
- CAN ID (Hex): 전송할 메시지 ID (16진수)
- DLC: Data Length Code (0-15)
- 채널: 메시지 전송에 사용할 채널 선택 (CH0-CH3)
- ID 타입: Standard 또는 Extended
제어 버튼
- 🔌 장치 연결: Tosun 장치 연결
- ▶ 예제 실행: 선택한 예제 실행
- ⏸ 중지: 실행 중인 예제 중지
- 🗑 메시지 클리어: 메시지 모니터 화면 지우기
- 🔍 필터 OFF/ON: 예제 4에서 필터 전환
- 🔌 연결 해제: 장치 연결 해제
우측 패널
예제 코드
- 예제 리스트에서 선택한 예제의 상세 코드 표시
CAN 메시지 모니터
- 실시간으로 송수신되는 CAN 메시지 표시
- 타임스탬프
- TX/RX 구분
- 채널 정보
- ID 타입 (Standard/Extended)
- CAN ID
- DLC 및 실제 바이트 수
- CAN FD/BRS 플래그
- 데이터 내용
CAN 송수신
- 목적: 단일 CAN 메시지 전송 및 수신의 기본 동작 이해
- 동작:
- 설정된 파라미터로 CAN 메시지 1개 전송
- Standard CAN (최대 8바이트)
- 전송 후 즉시 완료
학습 포인트:
- TLIBCANFD 구조체 생성
- FProperties 플래그 설정 (TX, Standard/Extended)
- tsapp_transmit_canfd_async() 함수 사용
- 비동기 전송 방식
CAN FD 송수신
- 목적: CAN FD 프로토콜과 고속 전송 방법 학습
- 동작:
- CAN FD 메시지 전송 (최대 64바이트)
- BRS(Bit Rate Switch) 활성화로 데이터 구간 고속화
- 16바이트 데이터 전송 (DLC=10)
학습 포인트:
- FFDProperties 플래그 설정 (EDL + BRS)
- Arbitration Phase: 500kbps
- Data Phase: 2000kbps
- DLC와 실제 바이트 수 관계
주기적 메시지 전송
- 목적: 하드웨어 기반 주기 전송 기능 이해
- 동작:
- 100ms 주기로 자동 전송
- 하드웨어/드라이버가 백그라운드에서 처리
- 중지 버튼으로 전송 중단 가능
학습 포인트:
- tsapp_add_cyclic_msg_canfd() 함수 사용
- tsapp_delete_cyclic_msg_canfd() 함수로 중지
- 소프트웨어 타이머 대비 정확한 주기 보장
필터 적용
- 목적: 수신 필터링 기능 학습 (하드웨어 지원 필요)
- 동작:
- CH0에서 3가지 ID(0x100, 설정ID, 0x200) 전송
- CH1에서 수신
- 필터 버튼으로 특정 ID만 수신/전체 수신 전환
학습 포인트:
- tsfifo_add_can_canfd_pass_filter() 함수 사용
- tsfifo_delete_can_canfd_pass_filter() 함수 사용
- Pass 필터 (화이트리스트) 방식
- 참고: 일부 라이브러리/펌웨어에서 미지원 가능
디채널 송수신
- 목적: 여러 채널 동시 사용 방법 학습
- 동작:
- 선택한 채널 수(2 or 4)만큼 순차 전송
- 각 채널마다 다른 ID 할당
- 모든 채널에서 동시 수신
학습 포인트:
- FIdxChn으로 채널 지정
- 각 채널 독립적 설정
- 채널별 FIFO 독립 관리
에러 프레임 처리
- 목적: CAN 버스 에러 발생 및 감지 방법 학습
- 동작:
- CH0, CH1의 종단 저항 OFF
- 빠른 속도로 메시지 전송하여 에러 유발
- 에러 프레임 수신 확인
- 중지 시 종단 저항 자동 복구
학습 포인트:
- initialize_lib_tscan()의 에러 프레임 활성화 옵션
- FProperties의 에러 플래그 확인
- TSMasterDevice로 종단 저항 제어
- 에러 프레임 식별 방법
사용 방법
1. 장치 연결
- 프로그램 실행
- 좌측 상단 "채널 수" 선택 (하드웨어에 맞게)
- 🔌 장치 연결 버튼 클릭
- 연결 성공 시 상태가 "연결됨"으로 변경
연결 실패 시:
- 장치가 USB에 제대로 연결되어 있는지 확인
- 다른 프로그램(TSMaster 등)이 장치를 사용 중이면 종료
- 드라이버가 설치되어 있는지 확인
2. 예제 선택 및 실행
- 좌측 예제 리스트에서 원하는 예제 클릭
- 우측 상단에 예제 코드 설명 표시
- 필요시 파라미터 수정 (CAN ID, DLC 등)
- ▶ 예제 실행 버튼 클릭
- 우측 하단 메시지 모니터에서 결과 확인
3. 예제 중지
- ⏸ 중지 버튼 클릭
- 타이머, 주기 전송 등이 자동으로 중지됨
4. 장치 연결 해제
- 🔌 연결 해제 버튼 클릭
- 또는 프로그램 종료 시 자동 해제
'api' 카테고리의 다른 글
libTSCAN 함수 목록 (0) 2026.02.05