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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

7、ispeed(&Opt,B19200); /*設置為19200Bps*/cfsetospeed(&Opt,B19200);tcsetattr(fd,TCANOW,&Opt);設置波特率的例子函數(shù):/*brief設置串口通信速率*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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論