通常在嵌入式linux中用到多个串口,在接收串口数据帧做处理时,如何才能做到快速高效呢, 我是这样写的,感觉像是查询 int res = 0; int ret = 0; int i; unsigned char flag=0; unsigned int counts = 0; while ((res=read(fd, &data[0], 1))>0) { counts++; if (counts > 100) break; if (data[0] == HEAD) { ret=read(fd, &data[1], 1); if (ret <= 0) break; ret=read(fd, &data[2], 1); if (ret <= 0) break; if (data[2] >50) continue;//数据帧长度字节;防止缓冲区溢出 for (i=0;i<data[2]+2;i++) { ret=read(fd, &data[3+i], 1); if (ret <= 0) break; } if (crc16(0, &data[1], data[2]+4)) continue; else return data[2];//数据帧校验正确,返回 } else continue; } // if (res < 0 || ret < 0) return 1; return flag;//无有效数据帧
有没有比这更有效的方法接收数据帧啊? 谢谢
|