回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0
我做了一个关于串口通信的应用程序,在linux环境下发送数据总会掉一部分数据,
据BeyondCompared工具比较发送和接收数据的结果,
我们发现丢的数据都是"OE OF EF "之类的数据段,
而且所丢数据的最后一个接受字节是"63"或"0C",
另外,"0D 0A"的数据都会变为"OD OD OA"

使用linux里面的stty指令设置stty -olnr后,"OD OD OA"的问题已经得到解决。


一些补充:
stty是一个用来改变并打印终端行设置的常用命令,现介绍几个常用的有趣的用法 :-)

1,在命令行下,禁止输出大写的方法 stty iuclc #开启
stty -iuclc #恢复
:-) 2,在命令行下禁止输出小写
stty olcuc #开启
stty -olcuc#恢复
3,打印出终端的行数和列数
stty size
4,改变ctrl+D的方法:
stty eof "string"
系统默认是ctrl+D来表示文件的结束,而通过这种方法,可以改变! :-) 5,屏蔽显示
stty -echo #禁止回显
stty echo #打开回显
测试方法:
stty -echo;read;stty echo;read
6,忽略回车符
stty igncr #开启
stty -igncr#恢复
最后,介绍一个实例:
一个限时输入的小脚本 #!/bin/ksh
stty -icanon min 0 time 100 while
do
echo "Please input:y/m/d/[ENTER]:" read input
case $input in
y)date +%Y;break;;
m) date +%m;break;;
d) date +%d;break;;
"") date +%Y/%m/%d;break;; . *)echo "wrong!again!";continue;;
esac
done
stty sane


2.1 stty 
[语法]: stty [-a] [-g] [选项] 
[说明]: 本命令设置终端,无参数时报告终端设置,本命令功能十分强大,应谨慎使用,下面仅介绍部分常用功能 
-a 显示当前终端所有设置 
-g 以能作为 stty 命令参数的方式显示终端设置 
以下是终端常用设置,在设置前加-表示清除设置: 
1.控制方式 
ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400 
本命令设置终端输入波特率,若为0则使用缺省波特率。 
例如 stty ispeed 9600 
ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400 
本命令设置终端输出波特率,参看 ispeed。 
2.输入方式 
ingbrk(-ignbrk) 忽略(不忽略)中断(BREAK) 
brkint(-brkint) 设置(清除)信号INTR为中断信号 
inlcr(-inlcr) 将换行转换(不转换)成回车 
icrnl( -icrnl) 将回车转换(不转换)成换行 
igncr(-ignrc) 忽略(不忽略)回车 
iuclc( -iuclc) 将大写字母转换(不转换)成小写字母 
3.输出方式 
olcut(-olcut) 将小写字母转换(不转换)为大写字母 
onlcr(-onlcr) 输出时将换行符转换(不转换)为回车换行 
ocrnl(-ocrnl) 输出时将回车符转换(不转换)为换行符 
4.本地方式 
echo (-echo) 设置(清除)回显 
stwrap(-stwrap) 截断(不截断)大于79个字符的行 
echoctl(-echoctr) 将控制键回显为^ 
posted on 2007-11-06 23:40 回忆之城 阅读(247) 评论(0)  编辑 收藏 引用 所属分类: unix/linux
只有注册用户登录后才能发表评论。