免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 861 | 回复: 0
打印 上一主题 下一主题

串口通信API [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-27 13:04 |只看该作者 |倒序浏览
串口通信
1 串口接口分DB9和DB25两种。其中DB9的2为发送,3为接受,5为接地。
  串口参数主要为:波特率,数据位,停止位,奇偶校验位,流控制协议位
2 重要数据结构
  struct termios{
  tcflag_t c_iflag;  /* input flags*/
  tcflag_t c_olag;   /* output flags*/
  tcflag_t c_cflag;  /* control flags*/
  tcflag_t c_lflag;  /* local flags*/
  cc_t  c_cc[NCCS];  /* control characters*/
  };


  /*
   c_cflag:
           CREAD  启用接受
           CSIZE  字符大小
           CSTOPB 停止位:1--2位;0--1位
           PARENB 奇偶校验位
           PARODD 奇校验位
*/

3 串口通信流程
  a  Tcgetattr函数取属性(termios struct)
     保存原串口属性,返回时可以恢复现场。
     struct termios newtio,oldtio;
     tcgetattr(fd,&oldtio);/*保存到fd当中*/
  b  激活选项 CLOCAL--本地连接;  CREAD--接受使能
     newtio.c_cflag=CLOCAL|CREAD;
  c  波特率设置i/o speed
     cfsetispeed(&newtio,B115200); //输入波特率为115200
     cfsetospeed(&newtio,B115200); //输出波特率为115200
  d  数据位设置
     newtio.c_cflag&=~CSIZE;         //字符大小
     newtio.c_cflag|=CS8;
  e  奇偶校验位c_cflag.c_iflag
     奇:newtio.c_cflag|=PARENB;
        newtio.c_cflag|=PARODD;

     偶:newtio.c_cflag|=(INPCK|ISTRIP);
        newtio.c_cflag|=PARENB;
        newtio.c_cflag|=~PARODD;
  f  停止位设置
     newtio.c_cflag&=~CSTOPB;          //0:1位
                                       //1:2位
  g  最少字符,等待时间设置(都设置为0)
     newtio.c_cc[VTIME]=0;
     newtio.c_cc[vmin]=0;
  h  处理应用对象
     tcflush(fd,quenue);
     i/o缓存处理:
         TCIFLUSH    //清理输入缓存队列
         TCOFLUSH    //清理输出缓存队列
         TCIOFLUSH   //清理输入输出缓存队列
  i  激活配置
     tcsetattr(fd,opt,termios*);
     tcsetattr(fd,TCNOW,&newtio);

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66913/showart_708052.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP