将DOS程序移植到linux以通过usb读/写串口

时间:2013-07-13 07:11:37

标签: linux serial-port dos tty

我有一个旧的DOS程序,可以使用串口。我需要将其移植到linux。我通过USB将我的串行设备连接到linux(使用rs232电缆)。它显示为/ dev / ttyUSB0。

我可以使用函数inboutb(而不是DOS等效的inp,outp)来从我的代码中读取或写入设备吗? (inboutb特殊功能,用于低级读写字节到特定端口地址)。我不明白如何确定正确的端口号。

也许有另一种方法 - 例如打开文件'/ dev / ttyUSB0'。但在这种情况下,我在读取设备寄存器时遇到问题,例如调制解调器控制寄存器(MCR)或线路状态寄存器(LSR)。

1 个答案:

答案 0 :(得分:1)

您可以将onb / outb或mmap(例如devmem,取决于架构)用于板载标准串行端口,但在用户区中不推荐。您需要root权限,可能会导致与内核驱动程序冲突,您必须确保您的硬件(例如16C550)与您的代码完全兼容。

添加串口时可以使用udev规则或旧的热插拔来触发程序。要确定USB串口转换器的端口,您可以使用USB总线ID和端口ID。您可以通过lsusb -t命令检查号码。

  • 串口配置:http://linux.die.net/man/3/termios
  • 检查是否有接收数据(LSR):select()
  • data inb / outb - > read()/ write()
  • MSR(DCD,RI,CTS)/ MCR(如果禁用硬件流控制,则为DTR,RTS) - > ioctl()或tty_ioctl

您可以向picocom source code

学习

实时应用可能存在的问题:USB总线轮询和进程/线程切换导致的延迟。