我有一个 8 通道 USB 继电器板,已通过 USB 连接。该委员会的手册指出:
要在 Linux 上使用本产品,需要将 USB CDC 驱动程序编译到内核中。幸运的是,大多数 Linux 发行版(Ubuntu、Redhat、Debian 等)都预装了这个驱动程序。
您需要重建内核以包含 USB CDC 驱动程序的可能性非常小。
当连接到 Linux 计算机时,该产品应在 /dev 目录中显示为串行端口。通常设备的名称将是
ttyACMx
或类似名称。该名称可能会有所不同,具体取决于您所使用的 Linux 发行版。
就我而言(运行 Gentoo),我确实必须将 USB CDC ACM 的驱动程序包含到内核中。
插入我的继电器,我可以使用以下命令看到这一点dmesg
:
[76094.036163] usb 4-1: new full-speed USB device number 4 using uhci_hcd
[76094.618717] usb 4-1: New USB device found, idVendor=2a19, idProduct=0c02
[76094.618722] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[76094.618725] usb 4-1: Product: Numato Lab 8 Channel USB Relay Module
[76094.618728] usb 4-1: Manufacturer: Numato Systems Pvt. Ltd.
运行lsusb
我看到ttyACM0
出现。但是使用向其发送命令字符串echo -ne 'string' > /dev/ttyACM0
没有效果。此外,ls -al
of/dev
显示这ttyACM0
不是字符设备文件。事实上它表明:
-rw-rw-rw- 1 root root 13 Nov 9 09:38 ttyACM0
我需要启用其他驱动程序或模块吗?为什么不ttyACM0
显示为字符设备?我发送命令的方式有问题吗ttyACM0
?
我安装了公司提供的Windows驱动程序后,继电器在Windows上成功运行。我可以使用 PuTTY 向它发送命令,没有任何问题,但我无法找出我在 Linux 上没有做对的地方。
答案1
该设备/dev/ttyACM0
是一个虚拟串口。您需要使用终端模拟器来连接它,例如 PuTTY、minicom 或 screen。使用 screen 你会运行类似的东西
screen /dev/ttyACM0 9600
其中 9600 是您的波特率。这将为您提供一个与董事会沟通的交互式会话。
答案2
我确实必须将 USB CDC ACM 的驱动程序包含到内核中
我没有写你是如何实现的,但我遇到了和你一样的问题,那就是Numato 8 通道 USB GPIO 模块,带模拟输入未列出/dev/ttyACM0 我简单地解决了:
sudo apt install linux-modules-extra-raspi
最后,我有 /dev/ttyACM0 可用于读/写。
希望它有助于整合主题。