openwrt 亲测可用串口实例
来源:互联网 发布:照片跳舞的软件 编辑:程序博客网 时间:2024/06/06 05:14
#include <stdio.h>#include <stdlib.h> #include <unistd.h> #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> #include <termios.h>#include <errno.h>#include <string.h> int main(){ int fd; int i; int len; int n = 0; char read_buf[20]; char write_buf[20]; char testbuff[]="Hello1263\r\n"; struct termios opt; fd = open("/dev/ttyUSB2", O_RDWR | O_NOCTTY); //默认为阻塞读方式 write(fd,testbuff,10); tcgetattr(fd, &opt); cfsetispeed(&opt, B9600); cfsetospeed(&opt, B9600); if(tcsetattr(fd, TCSANOW, &opt) != 0 ) { perror("tcsetattr error"); return -1; } opt.c_cflag &= ~CSIZE; opt.c_cflag |= CS8; opt.c_cflag &= ~CSTOPB; opt.c_cflag &= ~PARENB; opt.c_iflag &= ~INPCK;//opt.c_cflag &= ~INPCK;the last this is fetal set opt.c_cflag |= (CLOCAL | CREAD); opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); opt.c_oflag &= ~OPOST; opt.c_oflag &= ~(ONLCR | OCRNL); //添加的 opt.c_iflag &= ~(ICRNL | INLCR); opt.c_iflag &= ~(IXON | IXOFF | IXANY); //添加的 opt.c_cc[VTIME] = 0; opt.c_cc[VMIN] = 0; tcflush(fd, TCIOFLUSH); printf("configure complete\n"); if(tcsetattr(fd, TCSANOW, &opt) != 0) { perror("serial error"); return -1; } while(1) { n = 0; len = 0; bzero(read_buf, sizeof(read_buf)); //类似于memset bzero(write_buf, sizeof(write_buf));while( (n = read(fd, read_buf, sizeof(read_buf))) > 1 )//>0 { printf("n= %d \n", n);// for(i = len; i < (len + n); i++) { write_buf[i] = read_buf[i - len]; } len += n; } write_buf[len] = '\0';write_buf[1]=write_buf[0]; n = write(fd, write_buf, len);printf("have sended\n"); sleep(2); }}
把接收到的字符串第二个字符改成第一个字符,用于验证。串口配置项很重要,需要理解其意。
结构体和函数详细讲解https://wenku.baidu.com/view/33dc137a6bd97f192379e932.html
阅读全文
0 0
- openwrt 亲测可用串口实例
- epoll 获取串口数据 亲测可用
- 利用select接收串口数据 亲测可用小demo
- openwrt可用helloworld
- OPENWRT的串口初试
- Openwrt 串口多用户访问
- openwrt 下串口编程
- OpenWrt释放调试串口
- openwrt 串口操作
- openwrt的串口使用
- openwrt 串口 开发 注意事项
- 写入Excel文件最简实例(亲测可用)
- openwrt调试串口转为普通通信串口
- openwrt (linux)串口通信
- OPENWRT串口收发测试详解
- openwrt (linux)串口通信
- OPENWRT串口通信的实现
- Openwrt 串口密码登入
- 整数与字节数组的转换
- 契约式编程与防御式编程
- jupyter notebook 安装,使用
- Android 隐藏状态栏和虚拟按键的通用方法
- pyspark之数据处理学习【数据去重】(1)
- openwrt 亲测可用串口实例
- 使用apktool进行反编译获取XML资源文件
- Android常见错误整理
- EqualsBuilder和HashCodeBuilder
- 栈和队列之经典(上篇)
- Tensorflow常用基本概念与函数(一)
- 文章标题
- maven构建 出错:cannot be resolved to absolute file path because it does not reside in the file system
- 表达式语言EL(Expression Language)