两种方法

  • 利用/proc查看串口(或串口终端)属性:  cat /proc/tty/driver/serial                                                                                                              或: cat /proc/tty/drivers

  • 使用stty查看与设置串口(或串口终端)属性:      stty -F /dev/ttySn -a

=========================================================================

其他

  • 查看串口是否可用,可以对串口发送数据,如: echo helloworld >/dev/ttyS0

  • 查看串口驱动:cat /proc/tty/drivers/serial

  • 在终端输入:dmesg | grepttyS*显示从系统启动到现在串口插入拔出的信息。

  • 然后在设备端插入一个usb转rs232线,在终端输入:dmesg | grepttyS* ,会显示:usb 2-2.1:pl2303 converter now attached tottyUSB0; 可以通过此法确定我新插入的串口线对应的串口号。

=========================================================================

  • 使用stty查看与设置串口(或串口终端)属性

1. 指令语法

通过--help参数查看语法规则。

# stty --help

Usage:  stty [-F DEVICE] [--file=DEVICE] [SETTING]...
  or:  stty [-F DEVICE] [--file=DEVICE] [-a|--all]
  or:  stty [-F DEVICE] [--file=DEVICE] [-g|--save]

[选项]

-a, --all :     以容易阅读的方式打印当前的所有配置;

-g, --save:  以stty终端可读方式打印当前的所有配置。

-F, --file:     打印当前的所有设置打开指定的设备,并用此设备作为输入来代替标准输入

[参数]

终端设置:指定终端命令行的设置选项。
---------------------------------------------------------------------------------------------------------​-----------------​

2. 使用方法

可以用stty指令,查看或设置某个串口的波特率等信息。

用stty查看串口参数:       stty -F /dev/ttySn -a          #ttySn为要查看的串口

用stty设置串口参数:       

stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8 -parenb -cstopb  -echo
该命令将串口1(/dev/ttyS0)输入输出都设置成115200波特率,8位数据模式,

奇偶校验位-parenb,停止位-cstopb,同时-echo禁止终端回显。

一般情况下设置波特率和数据模式这两个参数就可以了,如果显示数据乱码,可能还需要设置其它参数,使用man查看stty其它设置选项。

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

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

改变ctrl+D的方法:                       stty eof "string"
系统默认是ctrl+D来表示文件的结束,而通过这种方法,可以改变。
 
屏蔽回显:                                 stty -echo #禁止回显             /          stty echo #打开回显
测试方法:                                 stty -echo;read;                     /          stty echo;read

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

cat打印串口数据:                     cat /dev/ttyS0                    #串口数据就可以在终端上显示了。

发送数据:                                 echo "sss" > /dev/ttyS0

读取串口数据并保存:      cat /dev/ttyUSB0 > serialdata.txt

---------------------------------------------------------------------------------------------------------​-----------------​

3.  示例

附: 串口查看参数
# stty -a -F /dev/ttyS0

speed 115200 baud;stty: /dev/ttyS0
 line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = 
; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

---------------------------------------------------------------------------------------------------------​-----------------​

4.  参数说明

  • 特殊字符:
  1.  * dsusp 字符    每当输入刷新时会发送一个用于终端阻塞信号的字符
  2.    eof  字符        表示文件末尾而发送的字符(用于终止输入)
  3.    eol  字符        为表示行尾而发送的字符
  4.  * eol2 字符       为表示行尾而发送的另一个可选字符
  5.    erase 字符     擦除前一个输入文字的字符
  6.    intr 字符         用于发送中断信号的字符
  7.    kill 字符          用于擦除当前终端行的字符
  8.  * lnext 字符      用于输入下一个引用文字的字符
  9.    quit 字符        用于发送退出信号的字符
  10.  * rprnt 字符      用于重绘当前行的字符
  11.    start 字符       在停止后重新开启输出的字符
  12.    stop 字符       停止输出的字符
  13.    susp 字符      发送终端阻断信号的字符
  14.  * swtch 字符    在不同的shell 层次间切换的字符
  15.  * werase 字符  擦除前一个输入的单词的字符
  • 特殊设置:
  1.    N                  设置输入输出速度为N 波特
  2.  * cols N          统治内核终端上有N 栏
  3.  * columns N   等于cols N
  4.    ispeed N      设置输入速度为N 波特
  5.  * line N           设置行约束规则为N
  6.    min N           和 -icanon 配合使用,设置每次一完整读入的最小字符数为<N>
  7.    ospeed N     设置输出速度为N 波特
  8.  * rows N         向内核通告此终端有N 行
  9.  * size              根据内核信息输出当前终端的行数和列数
  10.    speed           输出终端速度(单位为波特)
  11.    time N           和-icanon 配合使用,设置读取超时为N 个十分之一秒
  • 控制设置:
  1.    [-]clocal          禁用调制解调器控制信号
  2.    [-]cread          允许接收输入
  3.  * [-]crtscts        启用RTS/CTS 握手
  4.    csN                设置字符大小为N 位,N 的范围为5 到8
  5.    [-]cstopb        每个字符使用2 位停止位 (要恢复成1 位配合"-"即可)
  6.    [-]hup             当最后一个进程关闭标准终端后发送挂起信号
  7.    [-]hupcl           等于[-]hup
  8.    [-]parenb         对输出生成奇偶校验位并等待输入的奇偶校验位
  9.    [-]parodd         设置校验位为奇数 (配合"-"则为偶数)
  • 输入设置:
  1.    [-]brkint           任务中断会触发中断信号
  2.    [-]icrnl              将回车转换为换行符
  3.    [-]ignbrk           忽略中断字符
  4.    [-]igncr             忽略回车
  5.    [-]ignpar           忽略含有奇偶不对称错误的字符
  6.  * [-]imaxbel        发出终端响铃但不刷新字符的完整输入缓冲
  7.    [-]inlcr              将换行符转换为回车
  8.    [-]inpck            启用输入奇偶性校验
  9.    [-]istrip             剥除输入字符的高8 位比特
  10.  * [-]iutf8              假定输入字符都是UTF-8 编码
  11.  * [-]iuclc              将大写字母转换为小写
  12.  * [-]ixany             使得任何字符都会重启输出,不仅仅是起始字符
  13.    [-]ixoff               启用开始/停止字符传送
  14.    [-]ixon               启用XON/XOFF 流控制
  15.    [-]parmrk           标记奇偶校验错误 (结合255-0 字符序列)
  16.    [-]tandem          等于[-]ixoff
  • 输出设置:
  1.  * bsN          退格延迟的风格,N 的值为0 至1
  2.  * crN           回车延迟的风格,N 的值为0 至3
  3.  * ffN            换页延迟的风格,N 的值为0 至1
  4.  * nlN           换行延迟的风格,N 的值为0 至1
  5.  * [-]ocrnl     将回车转换为换行符
  6.  * [-]ofdel     使用删除字符代替空字符作填充
  7.  * [-]ofill        延迟时使用字符填充代替定时器同步
  8.  * [-]olcuc     转换小写字母为大写
  9.  * [-]onlcr     将换行符转换为回车
  10.  * [-]onlret    使得换行符的行为表现和回车相同
  11.  * [-]onocr    不在第一列输出回车
  12.    [-]opost     后续进程输出
  13.  * tabN         水平制表符延迟的风格,N 的值为0 至3
  14.  * tabs          等于tab0
  15.  * -tabs         等于tab3
  16.  * vtN            垂直制表符延迟的风格,N 的值为0 至1
  • 本地设置:
  1.    [-]crterase  擦除字符回显为退格符
  2.  * crtkill          依照echoprt 和echoe 的设置清除所有行
  3.  * -crtkill         依照echoctl 和echol 的设置清除所有行
  4.  * [-]ctlecho   在头字符中输出控制符号("^c")
  5.    [-]echo       回显输入字符
  6.  * [-]echoctl   等于[-]ctlecho
  7.    [-]echoe     等于[-]crterase
  8.    [-]echok     在每清除一个字符后输出一次换行
  9.  * [-]echoke    等于[-]crtkill 意义相同
  10.    [-]echonl    即使没有回显任何其它字符也输出换行
  11.  * [-]echoprt   在"\"和"/"之间向后显示擦除的字符
  12.    [-]icanon    启用erase、kill、werase 和rprnt 等特殊字符
  13.    [-]iexten      允许POSIX 标准以外的特殊字符
  14.    [-]isig          启用interrupt、quit和suspend 等特殊字符
  15.    [-]noflsh      在interrupt 和 quit 特殊字符后禁止刷新
  16.  * [-]prterase  等于[-]echoprt
  17.  * [-]tostop     中止尝试向终端写入数据的后台任务
  18.  * [-]xcase     和icanon 配合使用,用转义符"\"退出大写状态
  • 综合设置:
  1.  * [-]LCASE     等于[-]lcase
  2.    cbreak         等于-icanon
  3.    -cbreak        等于icanon
  4.    cooked        等于brkint ignpar istrip icrnl ixon opost isig icanon eof eol 等的默认值
  5.    -cooked       等于-raw
  6.    crt                等于echoe echoctl echoke
  7.    dec              等于echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u
  8.  * [-]decctlq     等于[-]ixany
  9.    ek                清除所有字符,将它们回溯为默认值
  10.    evenp          等于parenb -parodd cs7
  11.    -evenp        等于-parenb cs8
  12.  * [-]lcase       等于xcase iuclc olcuc
  13.    litout           等于-parenb -istrip -opost cs8
  14.    -litout          等于parenb istrip opost cs7
  15.    nl                等于-icrnl -onlcr
  16.    -nl               等于icrnl -inlcr -igncr onlcr -ocrnl -onlret
  17.    oddp           等于parenb parodd cs7
  18.    -oddp          等于-parenb cs8
  19.    [-]parity       等于[-]evenp
  20.    pass8         等于-parenb -istrip cs8
  21.    -pass8        等于parenb istrip cs7
  22.    raw             等于-ignbrk -brkint -ignpar -parmrk -inpck -istrip
  23.                  -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
  24.                  -imaxbel -opost -isig -icanon -xcase min 1 time 0
  25.    -raw          等于cooked
  26.    sane         等于cread -ignbrk brkint -inlcr -igncr icrnl -iutf8
  27.                 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
  28.                 -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
  29.                 isig icanon iexten echo echoe echok -echonl -noflsh
  30.                 -xcase -tostop -echoprt echoctl echoke,
  31.                 所有特殊字符均使用默认值

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐