在Linux中如何通过USB-to-RS232线与设备通信?

在Linux中如何通过USB-to-RS232线与设备通信?,linux,serial-port,usb,drivers,Linux,Serial Port,Usb,Drivers,我最近有一个关于通过RS-232线与特定设备通信的项目。由于我的计算机没有串行端口,我使用USB-to-RS232线作为设备和计算机之间的中间接口。但是我是Linux驱动程序新手,所以我很难理解它 我在Debian下工作,其中有一个默认的工作驱动程序,我已经测试了硬件方面可以做的一切,发现一切都很好。现在的情况是如何向设备发送命令并用C语言接收相应的数据。我读了一些书,我认为也许将usb端口映射为tty设备会起作用 我的想法正确吗?我有点困惑。我下载了“minicom”的源代码并阅读了其中的几行

我最近有一个关于通过RS-232线与特定设备通信的项目。由于我的计算机没有串行端口,我使用USB-to-RS232线作为设备和计算机之间的中间接口。但是我是Linux驱动程序新手,所以我很难理解它

我在Debian下工作,其中有一个默认的工作驱动程序,我已经测试了硬件方面可以做的一切,发现一切都很好。现在的情况是如何向设备发送命令并用C语言接收相应的数据。我读了一些书,我认为也许将usb端口映射为tty设备会起作用

我的想法正确吗?我有点困惑。我下载了“minicom”的源代码并阅读了其中的几行代码,但我还是不太明白。
请帮帮我。

您的USB-to-RS232可能正在使用FTDI芯片。Linux的想法是,任何添加到内核的驱动程序都可以通过操作/dev文件系统中的条目来访问

在使用Linux(或任何UNIX变体)时,首先需要知道的是,所有内容都是一个文件。因此,与Windows(制造商创建dll并告诉您要调用哪些函数)不同,Linux中使用的是标准文件系统函数(纯粹主义者注意:为了简单起见,我省略了ioctl)

因此,在dev目录中查看插入“wire”时出现的条目,以及取出时消失的条目。正如roderigo提到的,设备文件很可能被称为ttyUSB0,但ttyS0并非不可能

然后在程序中打开这个“文件”:
fd=open(“/dev/ttyUSB0”,O_RDWR)
您可以使用函数
write
read
从com端口发送和接收字符。完成后,使用
close(fd)

要设置行参数,请在minicom源代码或Linux文档中搜索termios结构

获得Kurt Wall等人的《Linux编程释放》一书,我认为这是任何为Linux上运行的应用程序编写C代码的人的必备之物


祝你好运。

正确安装的USB到RS232设备必须在Linux文件系统中创建COM端口设备,如/dev/ttyS0。有了这个设备,你可以编写标准的串口通信程序,不管这是真正的串口还是USB仿真@亚历克斯法伯:实际上,USB-to-RS232设备通常被命名为
/dev/ttyUSB0
@AlexFarber:非常感谢!我将引用这个问题。@HuStmpHrrr请看这个经典的howto:要确定适配器分配给哪个设备名,您可以将其插入并查看的最后一条消息将显示什么。线路参数也可以通过实用程序设置。“Posix操作系统串行编程指南”是一个很好的参考: