VirtualCAN 플러그인 사용

VirtualCAN 플러그인을 사용하면 CAN 하드웨어 없이 로컬 TCP/IP 연결로 CAN 애플리케이션을 테스트할 수 있습니다. 첫 번째 클라이언트가 createDevice()를 호출하면 TCP 서버가 생성됩니다. 기본 TCP 포트는 35468이며, createDevice()에 정규화된 URL을 제공하여 변경할 수 있습니다. 서버가 실행되면 동일한 시스템에서 더 이상 서버가 시작되지 않습니다.

이후 모든 클라이언트는 CAN 프레임을 서버로 전송하고, 서버는 이를 다른 클라이언트에게 배포합니다.

CAN 버스 장치 생성

먼저 QCanBus 에서 원하는 플러그인을 제공하는지 확인해야 합니다:

if (QCanBus::instance()->plugins().contains(QStringLiteral("virtualcan"))) {
    // plugin available
}

여기서 virtualcan은 플러그인 이름입니다.

다음으로 특정 인터페이스에 대한 연결을 설정할 수 있습니다:

QCanBusDevice *device = QCanBus::instance()->createDevice(
    QStringLiteral("virtualcan"), QStringLiteral("can0"));
device->connectDevice();

여기서 can0은 활성 CAN 채널 이름입니다. VirtualCAN 플러그인은 두 개의 채널 "can0"과 "can1"을 제공합니다. 두 채널 모두 CAN 2.0 또는 CAN FD 채널로 사용할 수 있습니다. 이 채널 중 하나에 연결된 모든 애플리케이션은 이 채널로 전송되는 모든 메시지를 수신합니다.

원격 서버에 연결하려면 다음과 같은 정규화된 URL을 인터페이스 이름으로 사용하세요:

tcp://server:port/canX

예를 들어

tcp://192.168.1.2:35468/can0

이제 장치가 CAN 프레임 쓰기 및 읽기를 위해 열려 있습니다:

QCanBusFrame frame;
frame.setFrameId(8);
QByteArray payload("A36E");
frame.setPayload(payload);
device->writeFrame(frame);

읽기는 readFrame() 메서드를 사용하여 수행할 수 있습니다. framesReceived () 신호는 하나 이상의 새 프레임을 읽을 수 있을 때 전송됩니다:

QCanBusFrame frame = device->readFrame();

VirtualCAN은 setConfigurationParameter()를 통해 제어할 수 있는 다음 구성을 지원합니다:

구성 매개변수 키설명
QCanBusDevice::CanFdKey가상 CAN 버스가 CAN FD 모드에서 작동할지 여부를 결정합니다. 이 옵션은 기본적으로 비활성화되어 있습니다.
QCanBusDevice::ReceiveOwnKeyCAN 프레임을 전송한 장치와 동일한 장치에서 CAN 프레임을 수신하는 것은 기본적으로 비활성화되어 있습니다. 이 옵션을 활성화하면 CAN 버스로 전송된 모든 CAN 프레임이 수신 버퍼에 즉시 나타납니다. 이를 통해 전송이 성공했는지 확인할 수 있습니다. 이 옵션을 활성화하면 수신된 프레임은 QCanBusFrame::hasLocalEcho()로 표시됩니다.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.