linux串口读取数据超时,android 串口缓存超时配置棘手问题

android 串口缓存超时配置棘手问题

发布时间:2012-12-11 09:58:11来源:红联作者:称霸糕富帅

各位大神,我在三星的qt210开发板上飞线了串口,当串口数据快速大量发送数据(上百kb,单片机那边我无法控制发送)到android端时会出现接收出错,有时候就只能接收到几个字节或几十个字节,还是乱的,我上层程序架构是8个字节一次次读,这个中间会有延迟,读了8个字节处理好了以后再往下面读。而我有时候数据不处理一次性读完,读到的数据就多点。我怀疑是串口缓存溢出或超时问题(单片机那边发送少量数据100字节以下,读取没有问题)。各位大神看看我的配置哪里有问题需要修改。

读取是select异步读取,停止位为1,8数据位,无校验。配置如下。

struct termios options;

fcntl(pHandle, F_SETFL, 0);

tcgetattr(pHandle, &options);

//bzero(&options, sizeof(options));

cfmakeraw(&options);

cfsetispeed(&options, B115200);//波特率单片机定死的,我这边无法控制

cfsetospeed(&options, B115200);

options.c_cflag |= (CLOCAL | CREAD);

options.c_cflag &= ~PARENB;

options.c_cflag &= ~CSTOPB;

options.c_cflag &= ~CSIZE;

options.c_cflag |= CS8;

options.c_cflag &= ~CRTSCTS;

options.c_iflag |= (IXOFF);

options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

options.c_oflag &= ~OPOST;

tcflush(pHandle, TCIFLUSH);

if (tcsetattr(pHandle, TCSANOW, &options) != 0) {

LOGE("set_uart_opt failed");

close(pHandle);

return -1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值