openwrt (linux)串口通信
2013-08-02 17:47
441 查看
1. 基本的串口通信程序。先读取内容,再将内容写回串口。
2. 注意
在这两个值均为0 的情况下,read不管有没有数据都会立即返回。详细情况在linux下man tcsetattr.
如果不设定这两个值,那么read只有收到回车后才会读取缓存中的数据。
程序大部分转载自:/article/6540332.html
该链接的程序部分有误。
#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> main() { int fd; int i; int len; int n = 0; char read_buf[256]; char write_buf[256]; struct termios opt; fd = open("/dev/ttyATH0", O_RDWR|O_NOCTTY|O_NDELAY); if(fd == -1) { perror("open serial 0\n"); exit(0); } tcgetattr(fd, &opt); bzero(&opt, sizeof(opt)); tcflush(fd, TCIOFLUSH); cfsetispeed(&opt, B115200); cfsetospeed(&opt, B115200); opt.c_cflag &= ~CSIZE; opt.c_cflag |= CS8; opt.c_cflag &= ~CSTOPB; opt.c_cflag &= ~PARENB; opt.c_cflag &= ~CRTSCTS; opt.c_cflag |= (CLOCAL | CREAD); opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); opt.c_oflag &= ~OPOST; 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; } printf("start send and receive data\n"); while(1) { n = 0; len = 0; bzero(read_buf, sizeof(read_buf)); bzero(write_buf, sizeof(write_buf)); while( (n = read(fd, read_buf, sizeof(read_buf))) > 0 ) { for(i = len; i < (len + n); i++) { write_buf[i] = read_buf[i - len]; } len += n; } write_buf[len] = '\0'; printf("Len %d \n", len); printf("%s \n", write_buf); n = write(fd, write_buf, len); printf("write %d chars\n",n); sleep(2); } }
2. 注意
opt.c_cc[VTIME] = 0; opt.c_cc[VMIN] = 0;
在这两个值均为0 的情况下,read不管有没有数据都会立即返回。详细情况在linux下man tcsetattr.
如果不设定这两个值,那么read只有收到回车后才会读取缓存中的数据。
程序大部分转载自:/article/6540332.html
该链接的程序部分有误。
相关文章推荐
- openwrt (linux)串口通信
- Linux 下串口USB等设备通信编程入门(1)
- Linux下串口通信工具minicom
- Linux串口通信编程 (Linux Serial Programming HOWTO)
- Linux 串口通信接口
- Linux 下串口USB等设备通信编程入门2
- openwrt调试串口转为普通通信串口
- openwrt 的串口与网络通信
- Linux 虚拟串口及 Qt 串口通信实例
- linux下串口转TCP网络通信
- linux 下串口通信程序(转载)
- Linux下基于QT的串口通信程序(Tiny6410)
- 串口通信编程详解(Linux)
- Linux 虚拟串口及 Qt 串口通信实例
- 串口通信编程详解(Linux)
- linux学习——简单串口通信
- Linux 下串口USB等设备通信编程入门1
- Linux操作系统下的串口通信
- linux串口通信程序
- 串口通信编程详解(Linux)