在Linux上配置串行端口的最简单方法是什么?


13

在Windows命令提示符下配置一个串行端口,我可以简单地使用:

mode com1: 9600,n,8,1

或阅读配置:

mode com1:

Linux中有类似的命令吗?在Linux中查找和配置串行端口的最简单方法是什么?


通常,您可以在用于访问串行的应用程序中对其进行编辑,例如screen /dev/ttyS0 <baud-rate>(无论系统范围内的设置如何,默认值
均为

我需要对其进行配置以使用POS打印机。
Hrvoje T 2015年

好的,在这种情况下,请尝试以下stty命令中提到的命令:wiki.openwrt.org/doc/recipes/serialbaudratespeed
phk 2015年

Answers:


27

您可以使用stty命令设置此类参数。

这将显示第一个串行端口上的所有设置(如果使用USB串行端口ttyS0ttyUSB0则替换为):

stty -F /dev/ttyS0 -a

这会将波特率设置为9600、8位,1个停止位,无奇偶校验:

stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb

通常使人们感到困惑的一件事是,一旦关闭设备,大多数串行驱动程序会将设置重置为默认值(即,不再有打开设备的进程)。因此,上面的stty命令将设置设置,然后在完成后,驱动程序再次将其重置。如果您首先让POS软件打开设备,然后执行stty设置,则它们应该一直存在,直到POS软件再次关闭设备(例如,退出时)。

我以为POS软件应该可以自行配置一些设置。如果要编写自己的软件来驱动打印机,请确保先打开设备,然后执行stty命令。

您可能还需要尝试其他设置,例如,opost意味着将执行输出后处理。如果opostonlcr都设置,onlcr则会在输出换行符(0xa)字节时添加额外的回车符(0xd),通常是为了防止阶梯打印,例如

This is a line
              This is the next line

这可能是您想要的,也可能不是。如果要将原始的一对一输出输出到打印机,请opost关闭(添加-opoststty参数中)。

握手(流控制)也由来控制stty,在不了解有关打印机的更多信息的情况下,我无法告诉您是否需要设置任何内容。

检查stty联机帮助页以获得更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.