为什么向串口写入一次命令后,会不断读到数据,下面代码是我写的一个简单的例子
2014-04-05 来自:有间客栈 0 人回应

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <termios.h>
#include <pthread.h>
#include <fcntl.h>

int fsd;
void pthread_recv();

int main()
{
struct termios opt;
int len;
char buf[128];
pthread_t pth;
fsd=open("/dev/ttyUSB0",O_RDWR);
if(fsd==-1)
{
perror("open");
exit(-1);
}
////////////////////////////////////////////////////////
tcgetattr(fsd,&opt);
tcflush(fsd,TCIOFLUSH);
cfsetispeed(&opt,B115200);
cfsetospeed(&opt,B115200);

if(tcsetattr(fsd,TCSANOW,&opt)!=0)
{
perror("tcsetattr");
return 1;
}
tcflush(fsd,TCIOFLUSH);
tcgetattr(fsd,&opt);
opt.c_cflag &=~CSIZE;
opt.c_cflag |=CS8;
opt.c_cflag &=~PARENB;
opt.c_cflag &=~INPCK;
opt.c_cflag &=~CSTOPB;
opt.c_cflag&=~CRTSCTS;
tcflush(fsd,TCIFLUSH);
if(tcsetattr(fsd,TCSANOW,&opt)!=0)
{
perror("tcsetattr2");
return -1;
}
write(fsd,"AT\r",3);
sleep(1);
while(1)
{
memset(buf,0,sizeof(buf));
len=read(fsd,buf,sizeof(buf));
if(len<=0)
{
fprintf(stdout,"stop...\n");
return -1;
}
fprintf(stdout,"...%s",buf);
}
}

还没有人回应!

您的回应

你还未登陆,不能回应!登陆