国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

淺談linux下的串口通訊開發(fā)

2019-11-02 16:47:23
字體:
供稿:網(wǎng)友

串行口是計算機一種常用的接口,具有連接線少,通訊簡單,得到廣泛的使用。常用的串口是RS-232-C接口(又稱EIA RS-232-C)它是在1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通訊的標準。串口通訊指的是計算機依次以位(bit)為單位來傳送數(shù)據(jù),串行通訊使用的范圍很廣,在嵌入式系統(tǒng)開發(fā)過程中串口通訊也經(jīng)常用到通訊方式之一。

Linux對所有設備的訪問是通過設備文件來進行的,串口也是這樣,為了訪問串口,只需打開其設備文件即可操作串口設備。在linux系統(tǒng)下面,每一個串口設備都有設備文件與其關(guān)聯(lián),設備文件位于系統(tǒng)的/dev目錄下面。如linux下的/ttyS0,/ttyS1分別表示的是串口1和串口2。下面來詳細介紹linux下是如何使用串口的:

1. 串口操作需要用到的頭文件

#include /*標準輸入輸出定義*/

#include /*標準函數(shù)庫定義*/

#include /*Unix 標準函數(shù)定義*/

#include

#include

#include /*文件控制定義*/

#include /*POSIX 終端控制定義*/

#include /*錯誤號定義*/

#include /*字符串功能函數(shù)*/

2. 串口通訊波特率設置

波特率的設置定義在,其包含在頭文件里。

常用的波特率常數(shù)如下:

B0-------à0 B1800-------à1800

B50-----à50 B2400------à2400

B75-----à75 B4800------à4800

B110----à110 B9600------à9600

B134----à134.5 B19200-----à19200

B200----à200 B38400------à38400

B300----à300 B57600------à57600

B600----à600 B76800------à76800

B1200---à1200 B115200-----à115200

假定程序中想要設置通訊的波特率,使用cfsetispeed( )和cfsetospeed( )函數(shù)來操作,獲取波特率信息是通過cfgetispeed()和cfgetospeed()函數(shù)來完成的。比如可以這樣來指定串口通訊的波特率:

#include //頭文件定義.......................struct termios opt; /*定義指向termios 結(jié)構(gòu)類型的指針opt*//***************以下設置通訊波特率****************/cfsetispeed(&opt,B9600 ); /*指定輸入波特率,9600bps*/cfsetospeed(&opt,B9600);/*指定輸出波特率,9600bps*//************************************************/...................

一般來說,輸入、輸出的波特率應該是一致的。

3. 串口屬性配置

在程序中,很容易配置串口的屬性,這些屬性定義在結(jié)構(gòu)體struct termios中。為在程序中使用該結(jié)構(gòu)體,需要包含文件,該頭文件定義了結(jié)構(gòu)體struct termios。

該結(jié)構(gòu)體定義如下:

#define NCCS 19struct termios {tcflag_t c_iflag; /* 輸入?yún)?shù) */tcflag_t c_oflag; /* 輸出參數(shù) */tcflag_t c_cflag; /* 控制參數(shù)*/tcflag_t c_ispeed; /* 輸入波特率 */tcflag_t c_ospeed; /* 輸出波特率 */cc_t c_line; /* 線控制 */cc_t c_cc[NCCS]; /* 控制字符*/};

其中成員c_line在POSIX(Portable Operating System Interface for UNIX)系統(tǒng)中不使用。對于支持POSIX終端接口的系統(tǒng)中,對于端口屬性的設置和獲取要用到兩個重要的函數(shù)是:

(1).int tcsetattr(int fd,int opt_DE,*ptr)

該函數(shù)用來設置終端控制屬性,其參數(shù)說明如下:

l fd:待操作的文件描述符

l opt_DE:選項值,有三個選項以供選擇:

TCSANOW: 不等數(shù)據(jù)傳輸完畢就立即改變屬性

TCSADRAIN:等待所有數(shù)據(jù)傳輸結(jié)束才改變屬性

TCSAFLUSH:清空輸入輸出緩沖區(qū)才改變屬性

l *ptr:指向termios結(jié)構(gòu)的指針

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华蓥市| 安乡县| 文登市| 南投市| 五华县| 玉树县| 和田县| 博乐市| 加查县| 江永县| 阿尔山市| 永康市| 文山县| 平乡县| 南岸区| 克拉玛依市| 保山市| 崇明县| 南城县| 清流县| 巴塘县| 兴和县| 司法| 霸州市| 独山县| 武穴市| 阿坝| 新建县| 石屏县| 登封市| 上饶县| 剑河县| 松原市| 铜川市| 北川| 潼关县| 饶河县| 黄浦区| 台湾省| 民县| 兴文县|