我正在尝试使用
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/