//发送缓冲区字节数定义
{
len= write(fd,sbuf,strlen(sbuf));
if(len == -1)
printf(\
else
printf(\
break;
case 'r':
printf(\
len = read(fd, sbuf, sizeof(sbuf));
if(len == -1)
printf(\
else
printf(\
break;
case 'q':
close(fd);
return 0;
case '\\n':
break;
default:
printf(\
break; } } close(fd);
return 0;
}Linux下串口编程遇到的接收数据错误及原因
近日在调试串口的时候发现,另一设备向我ARM板的串口发送0x0d,我接收之后变成了0x0a,这是问题一;另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收
此数,这是问题二。
由于问题莫名其妙,以为是笔记本的USB转232线缆的问题,换,问题依旧。
以为是对方设备的问题,采用串口调试助手模拟通讯设备与ARM板通讯,问题依旧。
无奈才去查看资料,最终得以解决,现总结如下:
1.串口操作需要的头文件#include <stdio.h> //标准输入输出定义
#include <stdlib.h> //标准函数库定义
#include <unistd.h> //Unix标准函数定义
#include <sys/types.h>