新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式Linux下串口应用编程的研究

基于嵌入式Linux下串口应用编程的研究

作者: 时间:2013-12-06 来源:网络 收藏

  设置串口设备之前,需要先获取当前串口设备的属性,这是因为结构体termios的成员都是和特定寄存器对应的,如果不先获取以前的状态,可能将寄存器中的值全部覆盖,从而导致通信失败,并且在操作完串口设备以后,需要将串口设备的属性恢复到以前的值。获取当前串口设备属性的过程如下:

  tcgetattr(fd,new_cfg); / /从f d代表的串口设备中获取当前的状态并将其保存在new_cfg中。

  接下来是将串口设备设置为原始模式,在本系统中需要使用原始模式进行通信。

  cfmakeraw(new_cfg);

  将串口通信的字符大小设为8个字符new_cfg.c_cflag = ~CSIZE;

  new_cfg.c_cflag |= CS8;

  设置波特率

  cfsetispeed(new_cfg,BARDRATE); / / 设

  置输入波特率

  cfsetospeed(new_cfg,BARDRATE); / / 设

  置输出波特率

  设置奇偶校验位,不适用奇偶校验

  new_cfg.c_cflag = ~PARENB;

  new_cfg.c_iflag = ~INPCK;

  设置停止位,使用一个byte

  new_cfg.c_cflag = ~CSTOPB;

  设置读取字符大小以及等待时间

  new_cfg.c_cc[VTIME]=50; //两个字符之间

  等待超过5s返回

  new_cfg.c_cc[VMIN]=1; //最少读取一个

  字符

  清除串口缓存

  该操作是必不可少的,否则会导致串口通信失败。

  tcflush(fd,TCIOFLUSH);

  其中TCIOFLUSH表示清空串口的缓存。

  接下来需要激活配置if((tcsetattr(fd,TCSANOW,new_cfg))!=0)

  {

  // perror(”tcsetattr“);

  return 1;

  }

  串口初始化、串口属性的设置的流程图,如图1所示。

  2.串口的读写和关闭

  利用串口通信的过程就是对串口设备的读写过程,只需要利用read()函数和write()函数对打开的串口设备的文件描述符操作即可。

  在操作完串口退出程序时,需要将打开的串口关闭,这个过程和关闭普通的文件一样,调用close()函数即可完成。

  四、结束语

  本文以指纹识别系统的串口编程为例,阐述了系统下,串口编程的具体设置方法,在本文的基础上再添加上层软件的设计即可完成一个指纹识别系统。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭