내 Raspberry Pi에 2개의 UCANDEVICE USB 어댑터가 연결되어 있습니다. 이 2개의 장치를 연결하면 /dev
( ttyACM0
및 ) 에 표시됩니다 ttyACM1
.
각 동글을 명확하게 식별하기 위해 다음과 같은 udev 규칙이 있습니다.
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c"
그 안에는 동글의 일련번호를 can-device-namer.py
연결하고 반환하는 스크립트가 있습니다 .ttACMx
이 규칙은 매우 효과적이어서 이제 두 UCANDEVICES의 이름을 모두/dev
CAN-N16014350
CAN-N1613434B
slcand
이제 시작 시 시작되는 서비스를 자동으로 시작하고 싶습니다 .CAN0
CAN1
이를 위해 udev 규칙을 다음과 같이 수정했습니다.
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c", TAG+="systemd", ENV{SYSTEMD_WANTS}="slcand@%k.service"
내 [email protected]
모습은 다음과 같습니다.
[Unit]
Description=Serial CAN daemon (can-utils)
BindsTo=dev-%i.device
After=dev-%i.device
[Service]
Type=forking
StopWhenUnneeded=yes
Environment=SLCAND_OPTS="-o -c -s6" SLCAND_DEV=can0
EnvironmentFile=-/etc/default/slcand
EnvironmentFile=-/etc/sysconfig/slcand
ExecStart=/usr/bin/slcand $SLCAND_OPTS %I $SLCAND_DEV
ExecStartPost=/bin/sh -c '/bin/sleep 3; /sbin/ip link set $SLCAND_DEV up'
내 문제는 [email protected]
으로 시작하여 ttyACM0
SIMLINK 규칙(예: )을 사용하여 /dev/CAN-N16014350
주어진 이름을 사용하여 /dev/CAN-N16014350
항상 CAN0
및 로 /dev/CAN-N1613434B
시작하도록 하고 싶다는 것입니다 CAN1
.
CAN0
나의 궁극적인 목표는 CAN1
SN N16014350이 있는 UCANDEVICE가 연결되고 SN N1613434B가 있는 UCANDEVICE가 연결될 때 자동으로 시작하는 것입니다.
현재는 2개의 동글만 가지고 있지만 3개 또는 4개에서도 작동할 것입니다. 어쩌면 장치 이름과 CAN 이름 사이의 할당으로 구성 파일을 정의해야 할 수도 있습니다.
당신의 도움을 주셔서 감사합니다:)