Linux串口应用开发
IT Education /* 输出模式标志 */ unsigned short c_cflag;/* 控制模式标志*/ unsigned short c_lflag; /*区域模式标志 * unsigned char c_line; /*行控制line discipline */ unsigned char c_ccNCC; /* 控制特性 */unsigned short c_iflag; /* 输入模式标志 */ ; 6IT Education Return -1; 7IT Education /*设置为19200Bps*/ cfsetospeed(9IT Education newtio.c_cflag |=CS8;10IT Education /奇校验newtio.c_cflag |= PARENB;/校验位使能 课堂练习一:设置偶校验位 newtio.c_iflag |=(INPCK | ISTRIP); newtio.c_cflag newtio.c_cflag |= PARENB;11IT Education 设置最少字符和等待时间newtio.c_ccVTIME =0;newtio.c_ccVMIN=0;12IT Education queue_selector取值如下:TCIFLUSH:刷新收到的数据但不读取TCOFLUSH:刷新写入的数据但是不传送TCIOFLUSH:同时刷新收到的数据但是不读,并且刷 新写入的数据但是不传送例如采用第三种方法: tcflush(fd,TCIOFLUSH);13IT Education OPTION的选项如下:TCSANOW:改变的配置立即生效TCSADRAIN:改变的配置在所有写入fd的输出结束后生 效TCSAFLUSH:改变的配置在所有写入fd引用对象的输出 都被结束后生效,所有已接受但未读入的输入都在改变 发生前丢弃例如:想使改变立即生效 tcsetattr(fd,TCSANOW,14IT Education /*以读写方式打开串口*/ fd = open( “/dev/ttyS0“, O_RDWR); if (-1 = fd) /* 不能打开串口*/ perror(“ 提示错误!“); 设置串口串口的设置主要是设置 struct termios 结构体的各成员值 。16IT Education /*储存当前串口设定 */ /*控制标志设定,含义如下: */ /*BAUDRATE:设定 bps 的速度 */ /*CRTSCTS:硬体流量控制 */ /*CS8:8n1 (8 位,无校验位,1 个终止位) */ /*CLOCAL:本地连线,没有主机控制功能*/ /*CREAD: 只能接收字元*/ newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR; /*忽略奇偶校验位*/ newtio.c_oflag = 0;/* Raw 模式输出*/ newtio.c_lflag = 0;/*非标准型输入,不回应*/ newtio.c_ccVMIN=1; /*在读取到 1 个字元前先停止*/ newtio.c_ccVTIME=0;/*不使用分割字元组的计时器*/ tcflush(fd, TCIFLUSH); /*清除串口缓冲区*/ tcsetattr(fd,TCSANOW,/*设置串口新参数*/ 17IT Education int Length;int nByte;nByte = write (fd , buffer ,Length) 读取串口数据 char buff1024; int Len; int readByte;readByte = read( fd , buff, Len); 18IT Education 19IT Education write向串口中写数据write(fd, buffer ,Length)close关闭串口文件close(fd);完整实例20IT Education & TrainingIT Education & Training Thank you 谢谢21