Android全平台使用“stty -F devport 57600”切换波特率失败

Android全平台使用“stty -F devport 57600”切换波特率失败
摘要由CSDN通过智能技术生成

【问题描述】:

Android平台使用“stty -F /dev/ttyHS0 57600”命令切换到57600波特率时,无法切换成功,在所有Android平台(高通/展锐)都存在
在这里插入图片描述

【问题分析】:

在tty_ioctl.c接口的set_termios接口打印tmp_termios.c_cflag状态发现,在配置57600波特率时,从应用层传下来的cflag一直是0x80001cb0。

以下是串口波特率的定义:/usr/include/bits/termios.h

注意:
这里定义的是8进制,而非16进制

#define  B50    0000001
#define  B75    0000002
#define  B110   0000003
#define  B134   0000004
#define  B150   0000005
#define  B200   0000006
#define  B300   0000007
#define  B600   0000010
#define  B1200  0000011
#define  B1800  0000012
#define  B2400  0000013
#define  B4800  0000014
#define  B9600  0000015
#define  B19200 0000016
#define  B38400 0000017
#define  B57600   0010001
#define  B115200  0010002
#define  B230400  0010003
#define  B460800  0010004
#define  B500000  0010005
#define  B576000  0010006
#define  B921600  0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017

可以看到57600的定义为0010001,那么cflag的最低位应该为1才对。到这里可以确定应用层传下来的串口配置有问题。继续跟踪stty工具源码。

stty位于:external/toybox/toys/pending/stty.c

通过查看stty代码发现在配置波特率时如下:

static const int bauds[] = {
   
0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值