我用Linux系统连接了两个MCU,一个带有串行接口,一个带有USB接口。Linux系统将串行接口识别为ttys1,将USB接口识别为28。对于串行接口,我可以通过/ dev / ttys1设备发送和接收数据。文件。但是对于USB接口,我无法使用/ dev / usb / 001/28设备文件发送和接收数据。
我们如何向连接的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
答案 0 :(得分:0)
诸如/dev/bus/usb/001/28
之类的文件是由Linux系统中的核心USB驱动程序创建的(请参见usb/core/devio.c)。该驱动程序对串行端口一无所知,仅对USB有所了解。因此,您可以发送到该文件的命令是“从端点2读取32个字节”或“向端点3发送11个字节”之类的事情,并且您将使用libusb或libusbp之类的库来发送这些命令。
但是,如果您可以使用实际的串行驱动程序来实现相同的目的,则不建议这样做,该串行驱动程序创建格式为/dev/tty*
的设备节点,并在/dev/serial/by-id
中创建符号链接。您可能能够像以前一样使用外壳从这些设备进行读写,但是我经常发现它无法按我期望的方式工作。您可以使用PuTTY或screen
之类的串行终端程序在串行端口上发送和接收ASCII字节(即,键入字符以发送它们)。您也可以编写C程序到open端口,使用termios设置其串行端口参数,然后从read到write。