急!!linux下串口通讯编程,read()不能读数据的原因?
!!本人菜鸟一个,刚编写了一段串口通讯程序,但是只能发送数据,不能接收数据,这是什么原因啊?请个位大侠不吝赐教,万分感谢!!
主函数代码如下:
volatile int STOP=FALSE;
int main(void)
{ int i;
int fd;
char send_buff[8]="OPEn";
int send_length;
int byteswrite;
char rcv_buff[8];
int rcv_length;
int bytesread;
char *dev = "/dev/ttyS1";
fd = OpenDev(dev); // fd= open("/dev/ttyS1",O_RDWR | O_NOCTTY);
set_speed(fd,2400); //波特率2400
if(set_Parity(fd,8,1,'N') == FALSE) //设置8,1,n
{
printf("Set Parity Error\n") ;
exit(0);
}
bzero(rcv_buff,sizeof(rcv_buff));
//发送数据,这里功能正常,能发送出数据“OPEn”
for(i=0;i<10;i++)
byteswrite=write(fd,send_buff,8 ) ; //成功返回写入数据的字节数,值等于length,如果写入失败返回-1
if(byteswrite==-1)
{
printf("write device %s error\n",*dev);
}
//读取数据!!这里的功能不能实现!!
while (STOP==FALSE)
{
bytesread =read(fd,rcv_buff,8 ) ; //读操作成功读取返回读取的字节数,失败则返回-1
rcv_buff[bytesread+1]='\0'; /* 设定字串终止字元, 所以我们能用 printf */
printf(":%s:%d\n",rcv_buff, bytesread);
if (rcv_buff[0]=='z')
STOP=TRUE;
}
if(close(fd)!=0)
{
printf("close device %s error",*dev);
}
return;
}