Linux串口操作及設(shè)置詳解分析_第1頁(yè)
Linux串口操作及設(shè)置詳解分析_第2頁(yè)
Linux串口操作及設(shè)置詳解分析_第3頁(yè)
Linux串口操作及設(shè)置詳解分析_第4頁(yè)
Linux串口操作及設(shè)置詳解分析_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux串口操作及設(shè)置詳解串口操作需要的頭文件#include/*標(biāo)準(zhǔn)輸入輸出定義*/#include/*標(biāo)準(zhǔn)函數(shù)庫(kù)定義*/#include/*Unix標(biāo)準(zhǔn)函數(shù)定義*/#include#include#include/*文件控制定義*/#include/*PPSIX終端控制定義*/#include/*錯(cuò)誤號(hào)定義*/1.打開串口在前面已經(jīng)提到linux下的串口訪問是以設(shè)備文件形式進(jìn)行的,所以打開串口也即是打開文件的操作。函數(shù)原型可以如下所示:int open(“DE_name”,int open_Status)參數(shù)說明:(1)DE_name:要打開的設(shè)備文件名比如要打開串口1,即為/dev/t

2、tyS0。(2)open_Status:文件打開方式,可采用下面的文件打開模式: O_RDONLY:以只讀方式打開文件 O_WRONLY:以只寫方式打開文件O_RDWR:以讀寫方式打開文件O_APPEND:寫入數(shù)據(jù)時(shí)添加到文件末尾O_CREATE:如果文件不存在則產(chǎn)生該文件,使用該標(biāo)志需要設(shè)置訪問權(quán)限位mode_tO_EXCL:指定該標(biāo)志,并且指定了O_CREATE標(biāo)志,如果打開的文件存在則會(huì)產(chǎn)生一個(gè)錯(cuò)誤O_TRUNC:如果文件存在并且成功以寫或者只寫方式打開,則清除文件所有內(nèi)容,使得文件長(zhǎng)度變?yōu)?O_NOCTTY:如果打開的是一個(gè)終端設(shè)備,這個(gè)程序不會(huì)成為對(duì)應(yīng)這個(gè)端口的控制終端,如果沒有該標(biāo)

3、志,任何一個(gè)輸入,例如鍵盤中止信號(hào)等,都將影響進(jìn)程。O_NONBLOCK:該標(biāo)志與早期使用的O_NDELAY標(biāo)志作用差不多。程序不關(guān)心DCD信號(hào)線的狀態(tài),如果指定該標(biāo)志,進(jìn)程將一直在休眠狀態(tài),直到DCD信號(hào)線為0。函數(shù)返回值:成功返回文件描述符,如果失敗返回-1例如:在Linux下串口文件是位于/dev下的。串口一為/dev/ttyS0,串口二為/dev/ttyS1。打開串口是通過使用標(biāo)準(zhǔn)的文件打開函數(shù)操作:int fd;/*以讀寫方式打開串口*/fd = open( /dev/ttyS0, O_RDWR);if (fd=-1)/*不能打開串口一*/perror(提示錯(cuò)誤!);2.設(shè)置串口最基

4、本的設(shè)置串口包括波特率設(shè)置,效驗(yàn)位和停止位設(shè)置。串口的設(shè)置主要是設(shè)置struct termios結(jié)構(gòu)體的各成員值。struct termio unsigned short c_iflag; /*輸入模式標(biāo)志*/unsigned short c_oflag; /*輸出模式標(biāo)志*/unsigned short c_cflag; /*控制模式標(biāo)志*/unsigned short c_lflag; /* local mode flags */unsigned char c_line; /* line discipline */unsigned char c_ccNCC; /* control char

5、acters */;設(shè)置這個(gè)結(jié)構(gòu)體很復(fù)雜,我這里就只說說常見的一些設(shè)置:2.1波特率設(shè)置波特率的設(shè)置定義在,其包含在頭文件里。常用的波特率常數(shù)如下:B0-0B1800-1800B50-50B2400-2400B75-75B4800-4800B110-110B9600-9600B134-134.5B19200-19200B200-200B38400-38400B300-300B57600-57600B600-600B76800-76800B1200-1200B115200-115200假定程序中想要設(shè)置通訊的波特率,使用cfsetispeed( )和cfsetospeed( )函數(shù)來操作,獲取波

6、特率信息是通過cfgetispeed()和cfgetospeed()函數(shù)來完成的。比如可以這樣來指定串口通訊的波特率:#include/頭文件定義.struct termios opt;/*定義指向termios結(jié)構(gòu)類型的指針opt*/*以下設(shè)置通訊波特率*/cfsetispeed(&opt,B9600 );/*指定輸入波特率,9600bps*/cfsetospeed(&opt,B9600);/*指定輸出波特率,9600bps*/*/.一般來說,輸入、輸出的波特率應(yīng)該是一致的。下面是另一個(gè)修改波特率的代碼:struct termios Opt;tcgetattr(fd, &Opt);cfset

7、ispeed(&Opt,B19200); /*設(shè)置為19200Bps*/cfsetospeed(&Opt,B19200);tcsetattr(fd,TCANOW,&Opt);設(shè)置波特率的例子函數(shù):/*brief設(shè)置串口通信速率*param fd類型int打開串口的文件句柄*param speed類型int串口速度*return void*/int speed_arr = B38400, B19200, B9600, B4800, B2400, B1200, B300,B38400, B19200, B9600, B4800, B2400, B1200, B300, ;int name_arr = 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400,19200, 9600, 4800, 2400, 1200, 300, ;void set_speed(int fd, int speed)int i;int status;struct termios O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論