我有通过 USB 端口连接的自制设备,并且我编写了一个用于从该设备获取数据的 C++ 程序。我已修改,/etc/udev/rules.d/50-ttyusb.rules
以便设备在插入时具有读/写权限。现在我还希望当我插入设备时,我的程序(名为SQM_ver2
)会自动运行。我该怎么做?
分配给设备的套接字是ttyACM0
。使用 Ubuntu 14.04。
lsusb
设备输出:
Bus 003 Device 005: ID ffff:0005
编辑:
我按照@steeldriver 的建议修改了我的规则文件,但没有奏效。请注意,我的程序使用终端窗口输出数据。我一直从终端运行它,但现在它应该自己打开终端。这里我还在/var/log/syslog
设备插入时在文件中添加了相关行:
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.078011] usb 3-1.4: new full-speed USB device number 8 using ehci-pci
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187324] usb 3-1.4: New USB device found, idVendor=ffff, idProduct=0005
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187339] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187347] usb 3-1.4: Product: USBSerial
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187353] usb 3-1.4: Manufacturer: LPCUSB
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187359] usb 3-1.4: SerialNumber: DEADC0DE
Jun 1 22:21:04 user-Lenovo-G50-45 kernel: [267790.188792] cdc_acm 3-1.4:1.0: ttyACM0: USB ACM device
Jun 1 22:21:04 user-Lenovo-G50-45 mtp-probe: checking bus 3, device 8: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1.4"
Jun 1 22:21:04 user-Lenovo-G50-45 mtp-probe: bus: 3, device: 8 was not an MTP device
编辑2:
这是我的规则文件现在的样子:
KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666",RUN+="/usr/bin/gnome-terminal"
有错误吗?SQM_ver2
我尝试只打开终端而不是我的程序,但它不起作用。权限设置正确,因此文件50-ttyusb.rules
至少在那部分工作正常。此外,查看我的50-ttyusb.rules
文件,我认为现在我连接的所有设备以及它们被分配ttyUSB
或ttyACM
套接字都将具有读/写权限(并且程序SQM_ver2
将启动)。我可能应该问另一个问题,关于如何仅为此设备设置权限(可能应该比较idVendor
和idProduct
?)。