我有一个旧的DOS
程序,可以使用串口。我需要将其移植到linux
。我通过USB将我的串行设备连接到linux(使用rs232电缆)。它显示为/ dev / ttyUSB0。
我可以使用函数inb
,outb
(而不是DOS
等效的inp,outp)来从我的代码中读取或写入设备吗? (inb
和outb
特殊功能,用于低级读写字节到特定端口地址)。我不明白如何确定正确的端口号。
也许有另一种方法 - 例如打开文件'/ dev / ttyUSB0'。但在这种情况下,我在读取设备寄存器时遇到问题,例如调制解调器控制寄存器(MCR)或线路状态寄存器(LSR)。
答案 0 :(得分:1)
您可以将onb / outb或mmap(例如devmem,取决于架构)用于板载标准串行端口,但在用户区中不推荐。您需要root权限,可能会导致与内核驱动程序冲突,您必须确保您的硬件(例如16C550)与您的代码完全兼容。
添加串口时可以使用udev规则或旧的热插拔来触发程序。要确定USB串口转换器的端口,您可以使用USB总线ID和端口ID。您可以通过lsusb -t
命令检查号码。
实时应用可能存在的问题:USB总线轮询和进程/线程切换导致的延迟。