Linux串口编程-2-mark校验
2012-10-12 00:10
435 查看
#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> main() { int fd; int i; int len; int n = 0; char b[1]={0x00}; char read_buf[256]; char write_buf[256]; struct termios opt; fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY); //默认为阻塞读方式 if(fd == -1) { perror("open serial 0\n"); exit(0); } 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_cflag &= ~INPCK; 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); //添加的 // //===================================== // //space // opt.c_cflag |= PARENB | CS8 | CMSPAR ; // //===================================== //===================================== //mark opt.c_cflag |= PARENB | CS8 | CMSPAR ; opt.c_cflag &= ~PARODD; //===================================== 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; printf("hw\n"); bzero(read_buf, sizeof(read_buf)); //类似于memset bzero(write_buf, sizeof(write_buf)); write(fd,b,sizeof b); usleep(50000); } }实验过程,下位机将SM2=1,char b[1]={0x00};或char b[1]={0x01};都能够进入中断!
参考:
《Linux操作系统下微机与单片机组成的多机通讯系统》 http://wenku.baidu.com/view/35e48a97dd88d0d233d46a16.html
《Linux串口编程》 http://www.cppblog.com/amazon/archive/2010/01/28/106644.html
相关文章推荐
- Linux串口编程-1-无校验
- Linux串口编程-3-even校验
- Linux串口编程-4-odd校验
- Linux串口编程-5-space校验
- Linux串口通讯(mark, space校验方式的实现)
- Linux串口编程-5-space校验2
- 嵌入式Linux串口应用编程
- linux下串口编程入门123
- linux下串口编程简单实例
- Linux串口编程详解
- Linux 下的串口编程
- 串口调试小节之三 Linux串口应用层编程注意
- Linux下的串口编程
- Linux 下串口编程入门教程
- 树梅派应用41:树莓派Linux串口编程实现自发自收
- Linux 串口编程
- linux串口编程 非规范模式 read()问题
- Linux下串口编程实例,实现0~255数据自环测试
- linux串口编程经典源码
- linux串口编程例子