我制作了一个谐波仪(用于绘制李萨如曲线的绘图机)。它是一台带有数字组件的模拟机器。模拟部分不可中断。数字组件是绘图板,通过 USB 连接到 Ubuntu 服务器。Arduino 将按键发送到服务器以创建新文件并保存旧文件。问题是,在文件操作所需的约 100 毫秒内,绘图程序会继续读取绘图板,但不记录当前位置。当文件 IO 返回时,新坐标将与最后一个已知坐标进行插值。这会在结果图像中生成一条线。参见右侧图片,其中该线特别引人注目:
我不想终止进程。我想暂时停止监听 USB 绘图板。类似于拔掉它。(如果有必要,我可以建立一个电路来做到这一点,以前的版本就是这样工作的)
从
$lsusb
...
Bus 001 Device 005: ID 056a:00de Wacom Co., Ltd CTH-470 [Bamboo Fun Pen & Touch]
....
服务器网页(图库)是用 bash 脚本生成的。我需要一个合适的 bash 命令来停止和启动 USB 平板电脑。
答案1
您可以解除 USB 绑定。您需要知道 USB 号码。
echo '{usbid}' |sudo tee /sys/bus/usb/drivers/usb/unbind
其中 {usbid} 由特定 USB 的总线和端口组成。
lsusb
或lsusb -t
将列出详细信息。例如:
$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 27c6:6a94 Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
Bus 003 Device 002: ID 0bda:5641 Realtek Semiconductor Corp. LG Camera
Bus 003 Device 004: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
或者
$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 2: Dev 2, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 2, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 7: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 12M
|__ Port 10: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 10: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 02.Port 1: Dev 1, Class=roo
t_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480
或者只是一个列表:
$ ls /sys/bus/usb/devices
1-0:1.0 3-0:1.0 3-10:1.0 3-2 3-2:1.1 3-7:1.0 usb1 usb3
2-0:1.0 3-10 3-10:1.1 3-2:1.0 3-7 4-0:1.0 usb2 usb4
===
Bus 001 Device 005: ID 056a:00de Wacom Co., Ltd CTH-470 [Bamboo Fun Pen & Touch]
将是 1-0:5.0,但您可以使用上述命令确认“次要”数字(也可能是 1-0:5 或 1-1:5)