【问题标题】:how to communicate with devices via a USB-to-RS232 wire in Linux?如何在 Linux 中通过 USB 转 RS232 线与设备通信?
【发布时间】:2013-12-12 19:00:21
【问题描述】:

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

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

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

【问题讨论】:

  • 正确安装的 USB 转 RS232 设备必须在 Linux 文件系统中创建 COM 端口设备,例如 /dev/ttyS0。有了这个设备,你就可以编写标准的串口通讯程序,不管是真串口还是USB仿真。 stackoverflow.com/questions/6947413/…
  • @AlexFarber:实际上,USB-to-RS232 设备通常命名为/dev/ttyUSB0
  • @AlexFarber:非常感谢!我将参考那个问题。
  • @HuStmpHrrr 看看这个经典的方法:tldp.org/HOWTO/Serial-HOWTO.html

标签: linux serial-port usb drivers


【解决方案1】:

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

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

因此,请查看 dev 目录,查看插入“电线”时出现的条目以及取出时消失的条目。正如 roderigo 所说,设备文件最有可能称为 ttyUSB0,但 ttyS0 并非不可能。

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

要设置线路参数,请搜索 minicom 源代码或 Linux 文档以获取 termios 结构。

获取 Kurt Wall 等人的《Linux Programming Unleashed》一书。我认为任何为在 Linux 上运行的应用程序编写 C 代码的人都必须拥有它。

祝你好运。

【讨论】:

  • 要确定适配器分配给什么设备名称,您可以将其插入并查看dmesg 的最后一条消息会说什么。线路参数也可以通过stty工具设置。
  • “Posix 操作系统的串行编程指南”是一个很好的参考:cmrr.umn.edu/~strupp/serial.html
猜你喜欢
  • 1970-01-01
  • 2018-02-17
  • 2012-04-28
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多