我遵循了本教程,现在我可以连接到串行线了。现在我想改变终端的宽度。我怎样才能通过使用 screen 或 minicom 或其他东西来做到这一点?
我正在尝试minicom
在 Ubuntu 中使用。
为此,我首先将 USB 至 DB9 转换器连接起来,然后在终端上键入此命令dmesg | grep tty
以检查我的 USB 至 DB9 转换器是否正确连接。
我得到了这个输出:
[ 0.000000] console [tty0] enabled
[ 54.200503] usb 2-1.2: pl2303 converter now attached to ttyUSB0
[ 76.183173] cdc_acm 1-1.1:1.2: ttyACM0: USB ACM device
[ 118.363275] cdc_acm 1-1.1:1.2: ttyACM0: USB ACM device
[ 190.079494] cdc_acm 1-1.1:1.2: ttyACM0: USB ACM device
Run Code Online (Sandbox Code Playgroud)
所以,我知道我的 USB 转 DB9 转换器名称是ttyUSB0
.
以下步骤按顺序执行:
minicom
使用命令打开sudo minicom -o -s -w
。serial port setup
和写入 …我有一个微控制器设备,它通过 USB 连接的串行端口发送换行符终止的字符串,并且(到目前为止)我使用minicom
2.6 版从/dev/ttyACM0
. 我已经设置了换行的终端应用程序,但我希望它在从我的串行设备接收换行符时转到下一行的开头。可以[以及如何]minicom
做到这一点?
编辑:我也尝试过我知道的方法,例如stty /dev/ttyACM0 ...,inlcr
and screen /dev/ttyACM0 ...,inlcr
,我知道可以选择将传入的换行符转换为回车+换行符(CR+LF),但这些方法都不起作用。我也尝试过其他选项(例如ocrnl
,以防我的逻辑错误,nl
以及-nl
),但都不起作用,我不知道为什么。
啊,我正在运行 Manjaro 16.06-rc1。
我有一个连接到 Yocto Linux 机器的串行控制台的 minicom 的烦人问题。
我输入的命令在第 80 个字符后环绕在同一行。这变得非常不方便使用。我在该行开头输入的所有内容都被该行的最后一个字符覆盖。
到同一台机器的 SSH 连接工作正常。在第 80 个字符后 ssh 转到下一行。
这是 stty 设置:
stty -a
speed 115200 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time …
Run Code Online (Sandbox Code Playgroud) 我在定制板上有一个嵌入式 Linux,我想通过其串行端口发送和接收文件。
与该设备进行通信的唯一方式是通过串行,并且该设备在该串行端口上提供了一个控制台。
这个板子kermit
既没有busybox rx
也没有lrzsz
。
- 发送文件到远程
我能够按照此线程将文件发送到董事会。
Host side Remote side
cat file | base64 > file_b64
cat > file_b64
minicom's ctrlA-S => send 'file_b64'
cat file_b64 | base64 --decode > file
Run Code Online (Sandbox Code Playgroud)
- 从远程获取文件
现在我想从远程系统检索文件。
Minicom 有一个接收文件的工具,但由于我只有串行端口的控制台使用 minicom 在远程端发出命令,我找不到如何去做。
我曾尝试在主机端使用 kermit,但似乎我还需要在远程端使用 kermit。
编辑:
我也尝试反转发送方法,但没有成功,因为我从主机端的串行端口没有收到任何信息。
Host side Remote side
cat file | base64 > file_b64
(sleep 10; cat file_b64 > /dev/ttyS0) &
minicom's ctrlA-X => exit minicom
cat /dev/ttyUSB0 > file_b64
Run Code Online (Sandbox Code Playgroud)
无法使用Minicom的接收工具,因为它仅支持 …
我正在尝试通过其在 gpio 引脚上的串行控制台访问我的树莓派。它通过 USB-3.3v 串行加密狗工作正常。但是,存在无法正确显示长行和长屏幕的问题。我在没有设置为 24x80 列的 gnome-terminal 中运行 minicom(和 gnome-terminal 的 Terminal/1 (24x80) 选项)没有帮助。
就好像 minicom 完全忽略了它必须获得的 sigwinch,和/或无法通过串行线路发送它以更改终端类型。
我正在管理一些板,如 Arduino/UDOO 等,但我总是面临 minicom 或屏幕的烦人问题。如果我输入一个长命令,例如:
sudo /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211 -c /etc/wpa_supplicant.conf
Run Code Online (Sandbox Code Playgroud)
它到达终端窗口的末尾,而不是在新行中继续,而是覆盖同一行。
另一个烦人的问题是当我使用向上/向下箭头向上/向下命令时。当我在最后一个命令中向上/向下时检查此 gif:
这是我的环境:
XDG_SESSION_ID=c1
TERM=linux
SHELL=/bin/bash
HUSHLOGIN=FALSE
USER=udooer
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
MAIL=/var/mail/udooer
LC_MESSAGES=POSIX
PWD=/home/udooer
LANG=en_US.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
HOME=/home/udooer
SHLVL=2
LANGUAGE=en_US.UTF-8
LOGNAME=udooer
LESSOPEN=| /usr/bin/lesspipe %s
XDG_RUNTIME_DIR=/run/user/1000
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)
checkwinsize 开启。
甚至 nano 也被调整为大屏幕左上角的小页面:/
如何解决?
有时,我会尝试调试启动速度非常快的(通常是串行)设备。
如果我让设备运行,我可以使用以下方法连接到它:
minicom -D /dev/ttyUSB0
然后,如果设备断开连接,minicom 将保持打开状态,直到重新连接。
即使设备尚未创建,是否有开关告诉 minicom 在这种“等待”状态下打开?
我试过了-o
(不要初始化。)
我目前正在尝试记录来自 /dev/ttyUSB0 的所有通信,同时能够将 minicom/screen 连接到同一设备进行交互。
我尝试了几个工具和教程,但它们似乎都占用了设备,所以我无法使用终端程序连接到它。
然后我遇到了socat。这听起来很有希望,尽管它能够将 /dev/ttyUSB0 重定向到 PTS 并将传输的数据记录到文件中。
这个想法是:
硬件 - /dev/ttyUSB0 <---> socat/logging <---> /dev/ptyX <---> minicom
以前有人这样做过吗?
任何帮助表示赞赏。克里斯
暂停/冻结 minicom 输出的组合键是什么?
有时,输出滚动得非常快,这使得分析某些事件变得困难。
我知道我可以捕获到文件,但我真的更希望能够暂停。
我需要通过 USB 到 RS-232 转换器与 Python 通信到设备。该应用程序minicom
无缝连接,所以如果我可以在非交互模式下运行它,一切都会很棒。
阅读文档有一些有趣的选项,但我没有完全理解其中的任何一个:
-t Terminal type. With this flag, you can override the environment
TERM variable.
-S script. Run the named script at startup.
Run Code Online (Sandbox Code Playgroud)
如何在我的应用程序和minicom
? 我应该使用其他东西吗?
minicom ×11
terminal ×5
serial-port ×3
tty ×2
uart ×2
usb ×2
gnu-screen ×1
linux ×1
newlines ×1
pty ×1
python ×1
raspberry-pi ×1
size ×1
socat ×1
ubuntu ×1