linux stty的含义是什么

52次阅读
没有评论

共计 2254 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“linux stty 的含义是什么”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux stty 的含义是什么”文章能帮助大家解决问题。

在 linux 中,stty 全称“set tty”,意思为“设置 tty”,是一个用于显示和修改 terminal(终端)相关设置的命令;语法“stty [选项] [设置]”,stty 命令不带参数可以打印终端行设置,加上“-a”选项可以打印得更详细些。

设备文件处理与磁盘文件的区别

先说几个比较直观的感觉。首先,在你通过键盘(一般是标准的输入的终端设备),输入字符,直到你输入的回车键(键盘上面的 Enter 为回车键,不是换行键;换行的 ACCII 为 10,回车为 13;换行在程序中的体现就是 \n),你的程序才会有“反应”,给人一种好像就是回车后你的程序才接受到你输入的数据;

其次,你在程序中写一个 printf(“This is a demo\n”); 你会发现你的下一个输出就是在下一行的最左边开始输出的,但是,回车与换行的本身功能是:

\r 为 return,回车,即使光标回到当前行的头;

\n 为 newline,换行,即光标移动到当前位置的下一行。

所以,说明进程将你的 \n 转化为了 \r\n。而在 Linux 下出现这些的原因,就是因为在终端设备与进程之间的中间,还有一个终端驱动器,里面有终端驱动函数。这里有两张图,便于大家理解。

进程和终端间的数据传输和数据处理是由终端设备驱动程序来负责的,终端驱动程序是内核的一部分。可以通过 tesetattr 和 tegetattr 函数来改变终端驱动程序里里面的设置

Linux stty 命令

1、作用

为了自己能够编写适合自己的终端驱动函数,即去修改终端驱动程序里面的设置。在 Linux 中有这个命令,就是 stty(set tty,设置 tty)。

stty:用于显示和修改终端命令行的相关设置(change and print terminal line settings)。

2、语法

stty [选项] [设置]
stty [选项]

常用选项

stty 命令不带参数可以打印终端行设置,加上 -a 参数可以打印得更详细些。

stty size:可以显示终端的大小,即行数和列数。

stty 命令还可以更改终端行的设置,格式如下:stty SETTING CHAR

其中,SETTING 可以是如下:

eof : 输入结束,文件结束,默认为 Ctrl+D。比如:用 cat file 来创建文件时,按 Ctrl+ D 来结束输入。

erase : 向后删除字符,擦除最后一个输入字符,默认为 Ctrl+?。注意默认情况下退格键 Backspace 不是删除字符。

intr : 中断当前程序,默认为 Ctrl+C。

kill : 删除整条命令,删除整行,默认为 Ctrl+U。

quit : 退出当前程序,默认为 Ctrl+\ 或 Ctrl+|。

start : 启动屏幕输出,默认为 Ctrl+Q。

stop : 停止屏幕输出,默认为 Ctrl+S。

susp : terminal stop 当前程序,默认为 Ctrl+Z。这样当前进程就会变成后台进程了。

werase:删除最后一个单词,默认为 Ctrl+W。

stty 命令还有一些其他用法,如:stty -echo 关闭回显(比如在脚本中用于输入密码时),然后再用 stty echo 打开回显。

# 在命令行下,禁止输出大写的方法:
stty iuclc     #开启
stty -iuclc    #恢复

# 在命令行下禁止输出小写:
stty olcuc    # 开启
stty -olcuc   #恢复

# 打印出终端的行数和列数:
stty size

# 改变 Ctrl+ D 的方法:
stty eof string
#系统默认是 Ctrl+ D 来表示文件的结束,而通过这种方法,可以改变!

# 屏蔽显示:
stty -echo   #禁止回显
stty echo    #打开回显
# 测试方法:
stty -echo;read;stty echo;read

# 忽略回车符:
stty igncr     #开启
stty -igncr    # 恢复

3、使用示例

下面以 xilinx 的串口终端为例说明 stty 命令的使用方法。

在 vivad0 配置了两个串口分别是 UART0 和 UART1,petalinx 中设置 UART1 为调试串口,UART0 和 UART1 分别对应分别对应 /dev/ttyPS1 和 /dev/ttyPS0,可以用 who 命令看一下当前终端使用的是哪个串口:

可以看到当前终端使用的是 ttyPS0

用 dmesg | grep ttyPS* 可以查看当前终端对应哪个串口

可以看到 ttyPS0 对应串口的物理地址是 0xff010000,从设备树中根据这个物理地址可以查到是哪个串口

1)查看当前终端信息:

stty -a

这个打印了当前终端的信息,一些参数解释如下:

speed 115200 baud:波特率是 115200

cs8:数据是 8 位

ixon:流控打开,如果是 -ixon 则表示流控关闭

clocal:使能 DTR/DTS

-parodd:失能奇校验

-parenb:失能奇偶校验

2)设置波特率 115200,数据位 8 位:

stty -F /dev/ttyPS1 115200 cs8

3)通过 UART1 发送数据:

echo  qwert    /dev/ttyPS1

4)查看 UART1 接受的数据

cat /dev/ttyPS1

通过串口工具向 UART1 发送数据,即可看到接受到的信息

关于“linux stty 的含义是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-12发表,共计2254字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)