+ -
当前位置:首页 → 问答吧 → 急!!linux下串口通讯编程,read()不能读数据的原因?

急!!linux下串口通讯编程,read()不能读数据的原因?

时间:2008-12-29

来源:互联网

!!本人菜鸟一个,刚编写了一段串口通讯程序,但是只能发送数据,不能接收数据,这是什么原因啊?请个位大侠不吝赐教,万分感谢!!
主函数代码如下:
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;
}      

作者: happybgt   发布时间: 2008-12-29

如何知道您不能发送数据?      

作者: 风雪狂客   发布时间: 2008-12-29