serial-port - screen /dev/ttyUSB0 具有不同的选项,例如数据位、奇偶校验等

标签 serial-port tty gnu-screen usbserial

我正在尝试使用

screen /dev/ttyUSB0



通过 USB 串行接口(interface)连接到旧计算机。

我希望在这个网站上注册我会收到我的问题的答案。我已经搜索和搜索,但还没有想出在我的命令行中放置正确的选项以从我的计算机获得非乱码反馈(收到的文本都搞砸了)。

我的操作系统是 CentOs,Gnome 2.16.0。
我看到有一个名为 KPPP 的程序有一个“终端...”,但也没有弄清楚。所以我试图将 CLI 与“屏幕”一起使用,但我无法设置正确的参数(显然,我不明白如何将这些参数与 stty 一起使用)。这不是安装应用程序或用这台计算机做任何事情的选项,所以我必须使用已经存在的东西。 'screen' 似乎可以完成这项工作,但收到的文本如前所述是乱码(“$$@%idj ldj”等)

我需要计算机一的这些参数:

Baud: 9600 Databit: 8 Parity: No Stopbit: 2 Flow control: Hardware.



对于计算机二,我需要:

Baud: 9600 Databit: 7 Parity: Even Stopbit: 1 Flow control: Hardware



波特率很简单;

screen /dev/ttyUSB0 9600



但是剩下的怎么办,我不知道。 .我找到了停止位的选项:

cstopb (use two stop bits)

-cstopb (use one stop bits)



但是我该如何正确使用它呢?

screen /dev/ttyUSB0 9600 -cstopb



或者

screen /dev/ttyUSB0 9600,-cstopb



因此,如果有人可以帮助我通过串行接口(interface)使用所有列出的参数连接到另一台计算机,我将非常感激!

2016 年 12 月 22 日更新:

我找到了这个 stty 手册:http://osr507doc.sco.com/man/html.C/stty.C.html

databit 和这个选项一样吗?

   cs5 cs6 cs7 cs8
        Select character size (see termio(M)). 


平价:

   parodd (-parodd)
         Select odd (even) parity. 


停止位:

   cstopb (-cstopb)
         Use two (one) stop bits per character. 


但是硬件控制呢?

无论如何;这仍然不起作用;

screen /dev/ttyUSB0 9600 cs8 oddp cstop 


或者

   screen /dev/ttyUSB0 9600 cs7 evenp -cstop

最佳答案

我不认为 screen 支持所有这些不同的串口设置,只支持最基本的参数。
通过查看 stty 手册,您已经朝着正确的方向前进,但是您必须将 stty 用作屏幕之外的单独工具:
首先配置串口,然后使用 screen 连接到它。

要为计算机 1 配置串行端口:

# stty - change and print terminal line settings
#
#    -F /dev/ttyUSB0      Change the settings of /dev/ttyUSB0
#    cs8                  Use 8 character bits
#    -parenb              Don't use a parity bit (the '-' means 'disable')
#    crtscts              Enable RTS/CTS handshaking (hardware flow control)
stty -F /dev/ttyUSB0 cs8 -parenb cstopb crtscts

配置端口后,您可以通过屏幕开始使用它:
# screen - screen manager with VT100/ANSI terminal emulation
#
#    /dev/ttyUSB0         Use /dev/ttyUSB0 as terminal
#    9600                 Open the serial port using 9600 baud
screen /dev/ttyUSB0 9600

这同样适用于您的第二台计算机:
# stty - change and print terminal line settings
#
#    -F /dev/ttyUSB0      Change the settings of /dev/ttyUSB0
#    cs7                  Use 7 character bits
#    parenb               Enable the a parity bit
#    -parodd              Don't use ODD, but use EVEN parity
#    -cstopb              Don't use 2 stopbits, but just the regular 1
#    crtscts              Enable RTS/CTS handshaking (hardware flow control)
stty -F /dev/ttyUSB0 cs7 parenb -parodd -cstopb crtscts

然后你可以启动屏幕@9600 波特:
# screen - screen manager with VT100/ANSI terminal emulation
#
#    /dev/ttyUSB0         Use /dev/ttyUSB0 as terminal
#    9600                 Open the serial port using 9600 baud
screen /dev/ttyUSB0 9600

这应该可以解决问题。您可以在 stty 的帮助下找到更多配置选项:
stty --help

关于serial-port - screen /dev/ttyUSB0 具有不同的选项,例如数据位、奇偶校验等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266001/

相关文章:

ssh - 运行包含带 screen 的 STDIN 重定向的命令

java - jssc (serialPort.readBytes()) 与 Arduino

c++ - Qt/C++中创建虚拟串口

c - Termcap tgetstr 获取方向键

linux - 临时清除tty

linux - 嵌入式linux串行终端多路复用器

java - Java中的RS232通信问题

java - PrintWriter 到 JTextArea,在调用的方法关闭之前不会显示任何内容

linux - 如何判断是在 linux 控制台还是在 ssh session 中运行?

linux - 如何让 GNU screen 在登录时自动启动?