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