Linux 串口编程学习

    技术2022-06-11  45

    1.打开串口  2.配置串口参数  3. 读写串口内容。

    1.打开串口函数open_port()中要实现的函数:

    (1)open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY);/*打开串口0*/

    (2)fcntl(fd,F_SETFL,0)/*恢复串口为阻塞状态*/

    (3)isatty(STDIN_FILENO) /*测试是否为中断设备 非0即是中断设备*/

     

    2.配置串口参数函数set_opt()中要实现的函数:

    (1)保存原先有串口配置 

    tcgetattr(fd,&oldtio);

    (2)先将新串口配置清0 

    bzore(&newtio,sizeof(newito));

     

    (3)激活选项CLOCAL和CREAD 并设置数据位大小 

    newtio.c_cflag |=CLOCAL | CREAD;

    newtio.c_cflag &= ~CSIZE;

    newtio.c_cflag |=CS8;

     

    (4)设置奇偶校验

    奇校验:

    newtio.c_cflag |= PARENB;

    newtio.c_cflag |= PARODD;

    newtio.c_iflag |= (INPCK | ISTRIP);

    偶校验: 

    newtio.c_iflag |= (INPCK | ISTRIP);

    newtio.c_cflag |= PAREND;

    newtio.c_cflag &= ~PARODD;

    无奇偶校验:

    newtio.c_cflag &= ~PARENB;

     

    (5) 设置停止位

    newtio.c_cflag &= ~CSTOPB; /*停止位为1*/

    newtio.c_cflag |= CSTOPB;/*停止位为0*/

     

    (6)设置波特率:

    cfsetispeed(&newtio,B115200);

    cfsetospeed(&newtio,B115200); 

     

    (7)设置等待时间和最小接受字符:

    newtio.c_cc[VTIME] = 0;

    newtio.c_cc[VMIN] = 0;

     

    (8)处理为接收字符:

    tcflush(fd,TCIFLUSH);

     

    (9)激活新配置:

    tcsetattr(fd,TCSANOW,&newtio);

    3.读写串口

    write(fd,buff,8);

    read(fd,buff,8);

     


    最新回复(0)