本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

谦卑,荣誉,牺牲,英勇,怜悯,诚实,精神,公正。


我的分类(专题)

日志更新

最新评论

留言板

链接

 

 


Blog信息
blog名称:
日志总数:183
评论数量:698
留言数量:7
访问次数:3017183
建立时间:2005年12月29日




[编程学习]linux com
网上资源,  软件技术

newqiang 发表于 2007/3/15 22:32:53

  char_t *dev  = "/dev/ttyS0";//com1 char_t *dev  = "/dev/ttyS0";//com1  int32_t fd = open( dev, O_RDWR | O_NOCTTY );//| O_NOCTTY  );//O_NDELAY );//| O_NOCTTY | O_NDELAY O_NONBLOCK  if (-1 == fd)  {              perror("Can't Open Serial Port");              exit(1);  }  else   {      set_speed(fd,115200 );          if (set_Parity(fd,8,1,'N') == FALSE)        {              printf("Set Parity Error\n");          close(fd);              exit(1);          }  }int set_Parity(int fd,int databits,int stopbits,int parity){        struct termios options;        if  ( tcgetattr( fd,&options)  !=  0) {               perror("SetupSerial 1");                   return(FALSE);         }       options.c_cflag &= ~CSIZE;        options.c_lflag  &= ~(ICANON | ECHO | ECHOE | ISIG);  /*Input*/       options.c_oflag  &= ~OPOST;   /*Output*/       options.c_iflag   &= ~IXON;        //0x11       options.c_iflag   &= ~ICRNL;       //0x0d//        options.c_cflag|=CLOCAL;//        options.c_cflag|=CREAD;//        options.c_cflag&=~CRTSCTS;/*Êý¾ÝÁ÷¿ØÖÆ,ÎÞ*/       switch (databits) /*ÉèÖÃÊý¾ÝλÊý*/       {          case 7:                         options.c_cflag |= CS7;               break;       case 8:                   options.c_cflag |= CS8;              break;          default:                  fprintf(stderr,"Unsupported data size\n"); return (FALSE);         }switch (parity) {          case 'n':       case 'N':                  options.c_cflag &= ~PARENB;   /* Clear parity enable */              options.c_iflag &= ~INPCK;     /* Enable parity checking */               break;         case 'o':          case 'O':                   options.c_cflag |= (PARODD | PARENB); /* ÉèÖÃÎªÆæÐ§Ñé*/                options.c_iflag |= INPCK;             /* Disnable parity checking */               break;         case 'e':         case 'E':                 options.c_cflag |= PARENB;     /* Enable parity */                  options.c_cflag &= ~PARODD;   /* ת»»ÎªÅ¼Ð§Ñé*/                   options.c_iflag |= INPCK;       /* Disnable parity checking */              break;       case 'S':        case 's':  /*as no parity*/              options.c_cflag &= ~PARENB;              options.c_cflag &= ~CSTOPB;break;         default:                 fprintf(stderr,"Unsupported parity\n");                  return (FALSE);         }  /* ÉèÖÃֹͣλ*/  switch (stopbits){          case 1:                  options.c_cflag &= ~CSTOPB;                break;         case 2:                  options.c_cflag |= CSTOPB;            break;       default:                   fprintf(stderr,"Unsupported stop bits\n");                 return (FALSE); } /* Set input parity option */ if (parity != 'n')          options.c_iflag |= INPCK; tcflush(fd,TCIFLUSH);options.c_cc[VTIME] = 0; /* ÉèÖó¬Ê±0 seconds*/   options.c_cc[VMIN] = 1; /* define the minimum bytes data to be readed*/if (tcsetattr(fd,TCSANOW,&options) != 0)   {        perror("SetupSerial 3");          return (FALSE);  } return (TRUE);  }void set_speed(int fd, int speed){       int   i;        int   status;        struct termios   Opt;       tcgetattr(fd, &Opt);        int speed_arr[] = { B115200,B38400, B19200, B9600, B4800, B2400, B1200, B300,                      B38400, B19200, B9600, B4800, B2400, B1200, B300, };       int name_arr[] = {115200,38400,  19200,  9600,  4800,  2400,  1200,  300, 38400,                                     19200,  9600, 4800, 2400, 1200,  300, };       for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++)     {         if  (speed == name_arr[i])         {                     tcflush(fd, TCIOFLUSH);                          cfsetispeed(&Opt, speed_arr[i]);                       cfsetospeed(&Opt, speed_arr[i]);                        status = tcsetattr(fd, TCSANOW, &Opt);              if  (status != 0)             {                            perror("tcsetattr fd");                              return;                             }                     tcflush(fd,TCIOFLUSH);                 }         }}


阅读全文(5686) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144768332 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号