Linux串口接收问题
开发环境:在arm9开发板上运行串口发送程序,pc上运行串口接收程序在pc上运行接收程序时,一开始能正常接收数据,但在接收到七个或八个数据后,读到的数据就为空。经分析发现...
开发环境:在arm9开发板上运行串口发送程序,pc上运行串口接收程序
在pc上运行接收程序时,一开始能正常接收数据,但在接收到七个或八个数据后,读到的数据就为空。经分析发现,接收端若设置串口数据位为7时,能接收到7个数据,若设置为8,则能接收8个数据,之后程序并不退出,但读到的数据是空的。
接收源码如下:
int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop);
int open_port(int fd, int comport);
int main(void)
{
int fd;
int nread ;
int i;
char buff[4];
memset(buff, 0, 4);
fd_set rd;
if((fd = open_port(fd,1)) < 0)
{
perror("open_port error");
return ;
}
if((i = set_opt(fd,9600,0,'N',1)) < 0)
{
perror("set_opt error");
return ;
}
FD_ZERO(&rd);
FD_SET(fd,&rd);
while(FD_ISSET(fd,&rd))
{
if(select(fd+1,&rd,NULL,NULL,NULL) < 0)
{
perror("select");
}
else{
while((nread = read(fd,buff,4)) > 0)
{
printf("nread=%d,%s\n",nread,buff);
}
}
}
close(fd);
return nread;
}
在串口设置中
newtio.c_cc[VTIME] = 0; newtio.c_cc[VMIN] = 0; 这样设置不知对此有没有影响 展开
在pc上运行接收程序时,一开始能正常接收数据,但在接收到七个或八个数据后,读到的数据就为空。经分析发现,接收端若设置串口数据位为7时,能接收到7个数据,若设置为8,则能接收8个数据,之后程序并不退出,但读到的数据是空的。
接收源码如下:
int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop);
int open_port(int fd, int comport);
int main(void)
{
int fd;
int nread ;
int i;
char buff[4];
memset(buff, 0, 4);
fd_set rd;
if((fd = open_port(fd,1)) < 0)
{
perror("open_port error");
return ;
}
if((i = set_opt(fd,9600,0,'N',1)) < 0)
{
perror("set_opt error");
return ;
}
FD_ZERO(&rd);
FD_SET(fd,&rd);
while(FD_ISSET(fd,&rd))
{
if(select(fd+1,&rd,NULL,NULL,NULL) < 0)
{
perror("select");
}
else{
while((nread = read(fd,buff,4)) > 0)
{
printf("nread=%d,%s\n",nread,buff);
}
}
}
close(fd);
return nread;
}
在串口设置中
newtio.c_cc[VTIME] = 0; newtio.c_cc[VMIN] = 0; 这样设置不知对此有没有影响 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询