linux - Linux 中的虚拟 COM 驱动程序用于从 USB 设备接收数据

标签 linux serial-port usb

我有一个仅针对 Windows 开发的 USB 条形码阅读器。但一位开发人员告诉我,一旦设备检测到它已连接到虚拟 COM 端口,它就可以开始工作了。 所以我的问题是我是否可以在 Linux 上创建一个虚拟 COM 端口并将设备连接到此端口。

这是我打开设备时的 udevadm 输出:

udevadm monitor --udev
UDEV  [10487.232696] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
UDEV  [10487.238105] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV  [10507.430306] add      /class/usbmisc (class)
UDEV  [10507.453800] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1 (usb)
UDEV  [10507.455899] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.0 (usb)
UDEV  [10507.456565] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.1 (usb)
UDEV  [10507.459065] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.1/0003:1AC2:0135.0015 (hid)
UDEV  [10507.461350] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.1/usbmisc/hiddev0 (usbmisc)
UDEV  [10507.461669] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.1/0003:1AC2:0135.0015/hidraw/hidraw2 (hidraw)

以下是 dmsg 输出:

dmsg
[10473.572851] usb 2-1.2: New USB device found, idVendor=05e3, idProduct=0610
[10473.572863] usb 2-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[10473.572869] usb 2-1.2: Product: USB2.0 Hub
[10473.573596] hub 2-1.2:1.0: USB hub found
[10473.573971] hub 2-1.2:1.0: 4 ports detected
[10493.661296] usb 2-1.2.1: new high-speed USB device number 41 using ehci-pci
[10493.754539] usb 2-1.2.1: New USB device found, idVendor=1ac2, idProduct=0135
[10493.754550] usb 2-1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10493.754557] usb 2-1.2.1: Product: *** USB DEVICE  
[10493.754562] usb 2-1.2.1: Manufacturer: ***
[10493.754566] usb 2-1.2.1: SerialNumber: 00000017
[10493.757449] hid-generic 0003:1AC2:0135.0015: hiddev0,hidraw2: USB HID v1.10 Device [*** USB DEVICE  ] on usb-0000:00:1d.0-1.2.1/input1

我已经尝试过 socat,但并没有真正成功。如果你们中的一位能够帮助我,我将非常感激。

谢谢, 拉尔夫

最佳答案

我认为您不需要考虑虚拟 COM 端口。这个条形码阅读器看起来像是一个 HID,因为我在 dmesg 输出中看到有关 HID 的消息。您可以使用 lsusb 查看设备的实际 USB 描述符来进行确认。

由于它是 HID,因此当您插入它时,驱动程序设置应该自动完成,并且您应该能够只扫描条形码,它可能会显示在您的 Linux 计算机上,就像通过键盘键入一样。

顺便说一句,我认为您无法真正“创建”虚拟 COM 端口。通常它的工作方式是设备的 USB 描述符表明它有一个 USB CDC ACM 虚拟 COM 端口,Linux USB 驱动程序读取这些描述符并使用它来设置虚拟 COM 端口的 PC 端。

关于linux - Linux 中的虚拟 COM 驱动程序用于从 USB 设备接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408524/

相关文章:

linux - 用于全双工通信的 USB 转串口适配器

vb.net - 防止 .net 串行端口在 FTDI USB 设备断开连接时崩溃

linux - 在 Linux 上创建新的以太网 USB 网络接口(interface)

c++ - 在Mac上读写USB(HID)中断端点

C 进程间通信

linux - 这个小黑盒子是什么,我该如何摆脱它?

python - 如何定义导入python库的路径

linux - 将文件中的行变成行

java - 从另一个线程传输数据,与 Java 和 RXTX 库的串行链接速度较慢

c# - 在 .NET 中使用 RS422 传输数据