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;
}