用到串口读取数据,要求数据要完整,即是一个数据帧,在用read读的时候会出现帧解析错误,以为是数据传输错误,尝试修改串口参数,没有解决问题,后来发现read(fd,buf,len)函数(非阻塞情况)并不会在读满len长度后返回,一般是读取比len小的长度就返回,才导致数据解析出错,所以解决办法是自己写一个读取指定数据长度的“read函数”。
代码如下:
int read_n_bytes(int fd,char* buf,int n)
{
/*read_len用来记录每次读到的长度,len用来记录当前已经读取的长度*/
int read_len = 0,len = 0;
/*read_buf用来存储读到的数据*/
char* read_buf = buf;