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

时间:2014-06-25 12:20:20

标签: linux serial-port usb

我有一个USB条形码阅读器,仅为Windows开发。但其中一位开发人员告诉我,一旦设备检测到它连接到虚拟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一起玩了,但我并没有真正成功。如果你们中的一个能够帮助我,我将非常感激。

谢谢, 拉尔夫

1 个答案:

答案 0 :(得分:0)

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

由于它是一个HID,驱动程序设置应该在你插入时自动完成,你应该能够只扫描一个条形码,它可能会显示在你的Linux计算机上,好像它是由键盘输入的一样

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