UART遇到两个与 stty 相关问题
来源:互联网 发布:linux 查看硬盘使用率 编辑:程序博客网 时间:2024/05/23 20:14
1.
device 发送单个字符,PC 接收正常;PC 发送单个字符给device,需要发送四次,device才能一起接收过来。
/ # echo "a" > /dev/ttyHSL1 ---正常/ # cat /dev/ttyHSL1 --- 字符大于4个字节或者单个字符发送四次,device这边才能接收到aaaa问题就在于 stty 的默认配置:
/ # stty -F /dev/ttyHSL1speed 115200 baud; 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 = 4; time = 0;-brkint ixoff -imaxbel-isig -icanon -iexten -echo里面有 min=4,我们可以试一下把 min 改成 1,
/ # stty -F /dev/ttyHSL1 min 1问题解决。
通过man stty 知道 :
Special settings:min N with -icanon, set N characters minimum for a completed read即 min N 的含义为: 和 -icanon 配合使用,设置每次一完整读入的最小字符数为<N>
2.
用UART 发送数据时,会多出一行回车,根据上面的经验,应该还是stty 默认配置问题,结果还真找到了。解决方法:
/ # stty -F /dev/ttyHSL1 -onlcronlcr 什么含义呢?
Output settings: * [-]onlcr translate newline to carriage return-newline即 enable onlcr 意味着 将换行符转换为回车加换行,这里面应该就是windows 和Linux文本换行符的问题。
Windows下用的是\r\n, 即CR&LF,ASCII是 0A0D.
linux/unix用的是\n, 即LF OA,ASCII 是0A.
所以发送字符串 echo "a" > /dev/ttyHSL1 ,在PC 端用SSCOM软件接收,enable onlcr 时 HEX 显示是:61 0D 0A, 而disable onlcr 时 HEX显示是:61 0A
综上,看来很多UART 问题都与stty 的默认配置有关。stty的源码 stty.c 在busybox的coreutils目录下。
0 0
- UART遇到两个与 stty 相关问题
- LPC1788 UART-DMA遇到的问题
- 遇到SDL两个问题
- tomcat配置与myeclipse激活遇到的两个问题
- stty
- 两个VOIP相关问题
- Windows Media Player 与 ActiveMove Window遇到的相关问题
- pip相关操作与可能遇到的问题
- conda相关操作与可能遇到的问题
- 遇到C语言相关的两个问题让我心情压抑
- Liferay遇到的两个问题
- 今天遇到的两个问题
- 今天遇到的两个问题
- day5:遇到的两个问题
- 今天遇到的两个问题
- mount遇到的两个问题
- 工作遇到相关问题查阅
- 遇到的数据库相关问题
- android基于zxing实现扫描中对扫描线条的更改
- SpringMVC-框架介绍
- 初探java虚拟机
- Color POJ
- 关于开机出现“安装程序正在为首次使用计算机做准备”的解决方案及微软OOBE与SYSPREP的实用技巧
- UART遇到两个与 stty 相关问题
- 单链表自动生成函数
- Geode多节点集群实验
- ios 使用自带的UIViewController实现qq加号下拉菜单的功能
- (leetcode) Keyboard Row
- Python安装Anaconda出现Error opening file for writing错误
- 程序员技术怀旧_晒晒那些过去的经典
- ReactiveCocoa学习篇——【下】
- poj 2355 DP 单调队列优化