ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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는 아래 그림과 같다.

    • 이 프로그램은 파이썬으로 작성되었다. 

    CAN_Demo_GUI.py
    0.05MB

     

     

     

    하드웨어

    • Tosun CAN 인터페이스 장치 (2채널 또는 4채널)
    • USB 포트
    • CAN 통신 테스트를 위한 채널 간 물리적 연결 (예: CH0 ↔ CH1)

    소프트웨어

    • 운영체제: Windows 10/11
    • Python: 3.12 이상
    • 필수 패키지: PyQt6
    • 드라이버: Tosun 장치 드라이버

     

    Python 패키지 설치

     

    pip install PyQt6
    pip install libtscanapi

    libtscanapi는 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. 장치 연결

    1. 프로그램 실행
    2. 좌측 상단 "채널 수" 선택 (하드웨어에 맞게)
    3. 🔌 장치 연결 버튼 클릭
    4. 연결 성공 시 상태가 "연결됨"으로 변경

    연결 실패 시:

    • 장치가 USB에 제대로 연결되어 있는지 확인
    • 다른 프로그램(TSMaster 등)이 장치를 사용 중이면 종료
    • 드라이버가 설치되어 있는지 확인

    2. 예제 선택 및 실행

    1. 좌측 예제 리스트에서 원하는 예제 클릭
    2. 우측 상단에 예제 코드 설명 표시
    3. 필요시 파라미터 수정 (CAN ID, DLC 등)
    4. ▶ 예제 실행 버튼 클릭
    5. 우측 하단 메시지 모니터에서 결과 확인

    3. 예제 중지

    • ⏸ 중지 버튼 클릭
    • 타이머, 주기 전송 등이 자동으로 중지됨

    4. 장치 연결 해제

    • 🔌 연결 해제 버튼 클릭
    • 또는 프로그램 종료 시 자동 해제

     

     

    hsl's tsmaster 사용기 목차 :: hsl's tsmaster 사용기    

    'api' 카테고리의 다른 글

    libTSCAN 함수 목록  (0) 2026.02.05