>source

다른 큰 응용 프로그램의 테스트 목적으로 CAN 포트를 에뮬레이트하는 프로그램을 만들고 싶습니다. 프로그램은 이 가상 CAN을 통해 이전에 기록된 데이터를 보내야 합니다. 누구든지 그런 경험이 있습니까?

가상 COM을 설정하고 이를 통해 CAN 프레임에 포장된 데이터를 보낼 생각입니다. 효과가 있을까요? 그리고 Linux에서 가상 COM을 어떻게 설정할 수 있습니까? 이 스레드를 찾았습니다. Linux용 가상 직렬 포트그러나 슬프게도 프로그램의 소스 code(리눅스 초보자 및 프로그래머)로 구현하는 방법을 모르겠습니다.

당신의 경험과 제안을 읽고 싶습니다.

  • 답변 # 1

    자습서

    PART 1 -CAN을 에뮬레이트하는 프로그램 만들기


    • 다음 bash 프로그램을 사용하여 Linux에서 가상 CAN 포트(vcan)를 생성할 수 있습니다.

      setup_vcan.sh

      #!/bin/bash
      # Using can1 as an example
      CAN_PORT="can1"
      sudo modprobe vcan
      sudo ip link add dev $CAN_PORT type vcan
      sudo ip link set up $CAN_PORT
      

    • bash 프로그램을 실행 가능하게 만듭니다.

      chmod +x setup_vcan.sh
      

    • bash 프로그램을 실행합니다.

      ./setup_vcan.sh
      

    PART 2 -CAN 메시지의 녹음 및 재생


    • CAN 메시지를 로그 파일에 기록합니다(교체$CAN_PORTCAN 포트의 이름으로):

      candump -L $CAN_PORT > myfile.log
      

    • 로그 파일에서 CAN 메시지 재생:

      canplayer -I myfile.log
      

    • 의 출력을 확인하여 재생을 확인할 수 있습니다.캔덤:

      candump $CAN_PORT
      

    참조

  • 답변 # 2

    필요한 소켓캔드라이버, Ubuntu 등과 같은 최신 Linux 배포판에서 사용할 수 있습니다. SocketCAN은 가상 CAN 포트 드라이버를 제공합니다.

    sudo modprobe vcan
    sudo ip link add dev vcan0 type vcan
    sudo ip link set up vcan0
    

    이제 CAN 프레임을 송수신할 수 있습니다.vcan0장치. Wikipedia 기사는 SocketCAN을 사용하는 방법에 대한 간단한 code 예제를 제공합니다.

    또한 다음이 필요합니다. 캔 유틸리티테스트 목적으로.

    SocketCAN과 그 사용법에 대한 자세한 정보는 eLinux.org

  • 이전 java : 내 html/css/js 프로젝트와 Spring Boot 연결하기
  • 다음 ajax.beginform()이 작동하지 않음 asp.net .net Framework 4.7.2