Linux上的串口和USB设备有什么区别?

问题描述 投票:-2回答:1

我连接了两个带有Linux系统的MCU,一个带有串行接口,另一个带有USB接口.Linux系统将串行接口识别为ttys1,USB接口识别为28.对于串行接口,我可以通过/ dev / ttys1设备文件发送和接收数据。但是对于USB接口,我无法使用/ dev / usb / 001/28设备文件发送和接收数据。

  1. 为什么我们无法使用与串行接口相同的特定设备文件访问Linux上的USB设备?
  2. 我们如何向连接的USB设备发送数据和从连接的USB设备接收数据?我已经read this post说我们必须使用libusb库编写代码。如果是这样,为什么我们需要它? For serial interface: echo -e "\0x20" > /dev/ttys1 success For USB interface: echo -e "\0x20" > /dev/ttys1 write error: Invalid argument
linux serial-port usb
1个回答
0
投票

/dev/bus/usb/001/28这样的文件是由Linux系统中的核心USB驱动程序创建的(参见usb/core/devio.c)。这个驱动程序对串口没有任何了解,它只知道USB。因此,您可以发送到此文件的命令类似于“从端点2读取32个字节”或“将11个字节发送到端点3”,您将使用libusb或libusbp等库来发送这些命令。

但是,如果您可以使用实际的串行驱动程序实现相同的功能,我不建议这样做,这些驱动程序创建/dev/tty*形式的设备节点,并在/dev/serial/by-id中创建符号链接。您可以使用像您正在做的shell那样从这些设备读取和写入,但我经常发现它不能按照我期望的方式工作。您可以使用PuTTY或screen等串行终端程序在串行端口上发送和接收ASCII字节(即键入要发送的字符)。你也可以写一个C程序到open端口,使用termios设置其串口参数,然后从readwrite设置它。

© www.soinside.com 2019 - 2024. All rights reserved.