当前位置: 技术问答>linux和unix
串口怎么会把我发出去的数据读回来?
来源: 互联网 发布时间:2015-08-07
本文导语: 我在linux下用串口发送“ATr”到gsm模块,正常情况下,gsm模块会返回“OK” 可是我直接用以下语句读串口, result = read(fd,SendAtResponse,255); SendAtResponse[result]=0; printf("n%sn",SendAtResponse); 返回的是: AT OK 就是说把我发的"A...
我在linux下用串口发送“ATr”到gsm模块,正常情况下,gsm模块会返回“OK”
可是我直接用以下语句读串口,
result = read(fd,SendAtResponse,255);
SendAtResponse[result]=0;
printf("n%sn",SendAtResponse);
返回的是:
AT
OK
就是说把我发的"ATr"(当然,还返回了几个"回车"和"换行"的信息)也读回来了,为什么会这样呢?
我是这样设置串口的:
options.c_cflag=baudrate|CS8|CREAD|CLOCAL;
options.c_lflag=0;
options.c_iflag=IGNPAR;
options.c_oflag=0;
options.c_cc[VTIME]=250;
options.c_cc[VMIN]=1;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&options);
可是我直接用以下语句读串口,
result = read(fd,SendAtResponse,255);
SendAtResponse[result]=0;
printf("n%sn",SendAtResponse);
返回的是:
AT
OK
就是说把我发的"ATr"(当然,还返回了几个"回车"和"换行"的信息)也读回来了,为什么会这样呢?
我是这样设置串口的:
options.c_cflag=baudrate|CS8|CREAD|CLOCAL;
options.c_lflag=0;
options.c_iflag=IGNPAR;
options.c_oflag=0;
options.c_cc[VTIME]=250;
options.c_cc[VMIN]=1;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&options);
|
ate0设置成不回显
ate1设置成回显
ate1设置成回显
|
找一本AT manual