linux串口驱动初始化

来源:互联网 发布:sql server browser 编辑:程序博客网 时间:2024/05/29 19:55
  1. // 内容比较简单,只为保存一下! 
  2. int uart_init(int num,int nSpeed) 
  3.     int fd; 
  4.     char port[20]; 
  5.     struct termios Opt; 
  6.  
  7. sprintf(port, "/dev/ttySAC%d", num); 
  8.     dprintf("Use port: %s ", port); 
  9.      
  10.     fd = open(port, O_RDWR);    //打开串口 
  11.     if (fd < 0) 
  12.     { 
  13.         perror("open ttySAC error"); 
  14.     } 
  15.  
  16.     tcgetattr(fd, &Opt);        //初始化 
  17.     tcflush(fd, TCIFLUSH); 
  18.  
  19.     switch (nSpeed) 
  20.     { 
  21.       case 2400: 
  22.           cfsetispeed(&Opt, B2400); 
  23.           cfsetospeed(&Opt, B2400); 
  24.           break
  25.       case 4800: 
  26.           cfsetispeed(&Opt, B4800); 
  27.           cfsetospeed(&Opt, B4800); 
  28.           break
  29.       case 9600: 
  30.           cfsetispeed(&Opt, B9600); 
  31.           cfsetospeed(&Opt, B9600); 
  32.           break
  33.       case 57600: 
  34. cfsetispeed(&Opt, B57600);
  35.           cfsetospeed(&Opt, B57600); 
  36.           break
  37.       case 115200: 
  38. cfsetispeed(&Opt, B115200);
  39.           cfsetospeed(&Opt, B115200); 
  40.           break
  41.       case 460800: 
  42.           cfsetispeed(&Opt, B460800); 
  43.           cfsetospeed(&Opt, B460800); 
  44.           break
  45.       default
  46.           cfsetispeed(&Opt, B9600); 
  47.           cfsetospeed(&Opt, B9600); 
  48.           break
  49.     } 
  50.  
  51.     Opt.c_cflag |= CS8;         //设置数据位 
  52.     Opt.c_cflag &= ~PARENB; 
  53.     Opt.c_oflag &= ~(OPOST); 
  54.     Opt.c_cflag &= ~CSTOPB; 
  55.     Opt.c_lflag &= ~(ICANON | ISIG | ECHO | IEXTEN); 
  56.     Opt.c_iflag &= ~(INPCK | BRKINT | ICRNL | ISTRIP | IXON); 
  57.  
  58.     Opt.c_cc[VMIN] = 0; 
  59.     Opt.c_cc[VTIME] = 0; 
  60.  
  61.     if (tcsetattr(fd, TCSANOW, &Opt) != 0)  
  62.     { 
  63.         perror("SetupSerial!"); 
  64.         close(fd); 
  65.         return -1; 
  66.     } 
  67.      
  68.     return fd; 
0 0
原创粉丝点击