新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 许昌县| 扎囊县| 伊春市| 合作市| 渭源县| 洪江市| 吕梁市| 团风县| 石阡县| 香港 | 右玉县| 锦州市| 武鸣县| 盐池县| 涿鹿县| 延庆县| 山西省| 金门县| 永川市| 仁布县| 马关县| 高青县| 山东省| 诸暨市| 定兴县| 盐边县| 济阳县| 荃湾区| 西充县| 沁源县| 弥渡县| 葫芦岛市| 永仁县| 扎鲁特旗| 安宁市| 军事| 满洲里市| 宁化县| 沂南县| 三原县| 伊宁县|