国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式Linux下串口應(yīng)用編程的研究

基于嵌入式Linux下串口應(yīng)用編程的研究

作者: 時(shí)間:2013-12-06 來(lái)源:網(wǎng)絡(luò) 收藏

  設(shè)置串口設(shè)備之前,需要先獲取當(dāng)前串口設(shè)備的屬性,這是因?yàn)榻Y(jié)構(gòu)體termios的成員都是和特定寄存器對(duì)應(yīng)的,如果不先獲取以前的狀態(tài),可能將寄存器中的值全部覆蓋,從而導(dǎo)致通信失敗,并且在操作完串口設(shè)備以后,需要將串口設(shè)備的屬性恢復(fù)到以前的值。獲取當(dāng)前串口設(shè)備屬性的過(guò)程如下:

  tcgetattr(fd,new_cfg); / /從f d代表的串口設(shè)備中獲取當(dāng)前的狀態(tài)并將其保存在new_cfg中。

  接下來(lái)是將串口設(shè)備設(shè)置為原始模式,在本系統(tǒng)中需要使用原始模式進(jìn)行通信。

  cfmakeraw(new_cfg);

  將串口通信的字符大小設(shè)為8個(gè)字符new_cfg.c_cflag = ~CSIZE;

  new_cfg.c_cflag |= CS8;

  設(shè)置波特率

  cfsetispeed(new_cfg,BARDRATE); / / 設(shè)

  置輸入波特率

  cfsetospeed(new_cfg,BARDRATE); / / 設(shè)

  置輸出波特率

  設(shè)置奇偶校驗(yàn)位,不適用奇偶校驗(yàn)

  new_cfg.c_cflag = ~PARENB;

  new_cfg.c_iflag = ~INPCK;

  設(shè)置停止位,使用一個(gè)byte

  new_cfg.c_cflag = ~CSTOPB;

  設(shè)置讀取字符大小以及等待時(shí)間

  new_cfg.c_cc[VTIME]=50; //兩個(gè)字符之間

  等待超過(guò)5s返回

  new_cfg.c_cc[VMIN]=1; //最少讀取一個(gè)

  字符

  清除串口緩存

  該操作是必不可少的,否則會(huì)導(dǎo)致串口通信失敗。

  tcflush(fd,TCIOFLUSH);

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

  接下來(lái)需要激活配置if((tcsetattr(fd,TCSANOW,new_cfg))!=0)

  {

  // perror(”tcsetattr“);

  return 1;

  }

  串口初始化、串口屬性的設(shè)置的流程圖,如圖1所示。

  

  2.串口的讀寫(xiě)和關(guān)閉

  利用串口通信的過(guò)程就是對(duì)串口設(shè)備的讀寫(xiě)過(guò)程,只需要利用read()函數(shù)和write()函數(shù)對(duì)打開(kāi)的串口設(shè)備的文件描述符操作即可。

  在操作完串口退出程序時(shí),需要將打開(kāi)的串口關(guān)閉,這個(gè)過(guò)程和關(guān)閉普通的文件一樣,調(diào)用close()函數(shù)即可完成。

  四、結(jié)束語(yǔ)

  本文以指紋識(shí)別系統(tǒng)的串口編程為例,闡述了系統(tǒng)下,串口編程的具體設(shè)置方法,在本文的基礎(chǔ)上再添加上層軟件的設(shè)計(jì)即可完成一個(gè)指紋識(shí)別系統(tǒng)。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉