Linux操作系統下的串口通信學習筆記

http://www.diybl.com/ 2008-7-5  網絡 點擊:  [ 評論 ]
-
-
文章搜索:     【點擊打包該文章】 
【本站開通在線QQ討論羣】

CBAUDEX (不屬於POSIX)擴展的波特率掩碼(1位),包含在CBAUD中。
CSIZE 字符長度掩碼。取值爲CS5,CS6,CS7或CS8。
CSTOPB 設置兩個停止位。
CREAD 打開接受者。
PARENB 允許輸出產生奇偶信息以及輸入的奇偶校驗。
PARODD 輸入和輸出是奇校驗
HUPCL 在最後一個進程關閉設備後,降低MODEM控制線(掛斷)。
CLOCAL 忽略MODEM控制線。
LOBLK (不屬於POSIX)從非當前SHELL層阻塞輸出(用於sh1)。
CIBAUD (不屬於POSIX)輸入速度的掩碼。CIBAUD各位的值與CBAUD各位相同,左移了IBSHIFT位。
CRTSCTS (不屬於POSIX)啓用RTS/CTS(硬件)控制流。
 
c_lflag成員
Flag Description
ISIG 當接收到字符INTR,QUIT,SUSP或DSUSP時,產生相應的信號。
XCASE (不屬於POSIX;LINUX下不支持)如果同時設置了ICANON,終端只有大寫。輸入被轉換爲小寫,除了以/前綴的字符。輸出時,大寫字符被前綴/,小寫字符被轉換成大寫。
ECHO 回顯輸入字符。
ECHOE 如果同時設置了ICANON,字符ERASE擦除前一個輸入字符,WERASE擦除前一個詞。
ECHOK 如果同時設置了ICANON,字符KILL刪除當前行。
ECHONL 如果同時設置了ICANON,回顯字符NL,即使沒有設置ECHO。
ECHOCTL (不屬於POSIX)如果同時設置了ECHO,除了TAB,NL,START和STOP之外的ASCII控制信號被回顯爲^x,這裏X是比控制信號大0x40的ASCII碼。例如字符0x08(BS)被回顯爲^H。
ECHOPRT (不屬於POSIX)如果同時設置了ICANON和IECHO,字符在刪除的同時被打印。
ECHOKE (不屬於POSIX)如果同時設置了ICANON,回顯KILL時將刪除一行中的每個字符,如同指定了ECHOE和ECHORPT一樣。
DEFECHO (不屬於POSIX)只在一個進程讀的時候回顯。
FLUSHO (不屬於POSIX;LINUX不支持)輸出被刷新。這個標誌可以通過鍵入字符DISCARD來打開和關閉。
NOFLSH 禁止產生SIGINT,SIGQUIT和SIGSUSP信號時刷新輸入和輸出隊列。
TOSTOP 向試圖寫控制終端的後臺進程組發送SIGTTOU信號。
PENDIN (不屬於POSIX;LINUX不支持)在讀入一個字符時,輸入隊列中的所有字符被重新輸出。(bash用他來處理typeahead)。
IEXTEN 啓用實現自定義的輸入處理。這個標誌必須與ICANON同時使用,才能解釋特殊字符EOL2,LNEXT,REPRINT和WERASE,IUCLC標誌纔有效。

c_cc數組成員
Flag Description
VINTR (003,ETX,Ctrl-C,or also 0177, DEL, rubout)中斷字符。發送SIGINT信號。當設置ISIG時可被識別,不再作爲輸入傳遞。
VQUIT (034,FS,Ctrl-/)退出字符。發出SIGQUIT信號。當設置ISIG時可被識別,不再作爲輸入傳遞。
VERASE (0177, DEL, rubout, or 010, BS, Ctrl-H, or also #) 刪除字符。刪除上一個還沒有刪掉的字符,但不刪除上一個 EOF 或行首。當設置 ICANON 時可被識別,不再作爲輸入傳遞。
VKILL (025, NAK, Ctrl-U, or Ctrl-X, or also @) 終止字符。刪除自上一個 EOF 或行首以來的輸入。當設置 ICANON 時可被識別,不再作爲輸入傳遞。
VEOF (004, EOT, Ctrl-D) 文件尾字符。更精確地說,這個字符使得 tty 緩衝中的內容被送到等待輸入的用戶程序中,而不必等到 EOL。如果它是一行的第一個字符,那麼用戶程序的 read() 將返回 0,指示讀到了 EOF。當設置 ICANON 時可被識別,不再作爲輸入傳遞。
VMIN 非 canonical 模式讀的最小字符數。 VEOL (0, NUL) 附加的行尾字符。當設置 ICANON 時可被識別。 VTIME 非 canonical 模式讀時的延時,以十分之一秒爲單位。 VEOL2 (not in POSIX; 0, NUL) 另一個行尾字符。當設置 ICANON 時可被識別。
VEOL (0, NUL) 附加的行尾字符。當設置 ICANON 時可被識別。
VTIME 非 canonical 模式讀時的延時,以十分之一秒爲單位。
VEOL2 (not in POSIX; 0, NUL) 另一個行尾字符。當設置 ICANON 時可被識別。
VSWTCH (not in POSIX; not supported under Linux; 0, NUL) 開關字符。(只爲 shl 所用。)
VSTART (021, DC1, Ctrl-Q) 開始字符。重新開始被 Stop 字符中止的輸出。當設置 IXON 時可被識別,不再作爲輸入傳遞。
VSTOP (023, DC3, Ctrl-S) 停止字符。停止輸出,直到鍵入 Start 字符。當設置 IXON 時可被識別,不再作爲輸入傳遞。
VSUSP (032, SUB, Ctrl-Z) 掛起字符。發送 SIGTSTP 信號。當設置 ISIG 時可被識別,不再作爲輸入傳遞。
VDSUSP (not in POSIX; not supported under Linux; 031, EM, Ctrl-Y) 延時掛起信號。當用戶程序讀到這個字符時,發送 SIGTSTP 信號。當設置 IEXTEN 和 ISIG,並且系統支持作業管理時可被識別,不再作爲輸入傳遞。
VLNEXT (not in POSIX; 026, SYN, Ctrl-V) 字面上的下一個。引用下一個輸入字符,取消它的任何特殊含義。當設置 IEXTEN 時可被識別,不再作爲輸入傳遞。
VWERASE (not in POSIX; 027, ETB, Ctrl-W) 刪除詞。當設置 ICANON 和 IEXTEN 時可被識別,不再作爲輸入傳遞。
VREPRINT (not in POSIX; 022, DC2, Ctrl-R) 重新輸出未讀的字符。當設置 ICANON 和 IEXTEN 時可被識別,不再作爲輸入傳遞。
VDISCARD (not in POSIX; not supported under Linux; 017, SI, Ctrl-O) 開關:開始/結束丟棄未完成的輸出。當設置 IEXTEN 時可被識別,不再作爲輸入傳遞。
VSTATUS (not in POSIX; not supported under Linux; status request: 024, DC4, Ctrl-T).

 
8.2設置波特率
對於波特率的設置通常使用cfsetospeed和cfsetispeed函數來完成。獲取波特率信息是通過cfgetispeed和cfgetospeed函數來完成的。
cfsetospeed函數
頭文件:
#include
函數原型:
int cfsetospeed(struct termios *termptr, speed_t speed);
參數:
struct termios *termptr - 指向termios結構的指針
speed_t speed - 需要設置的輸出波特率
返回值:
如果成功返回0,否則返回-1
cfsetispeed函數
頭文件:
#include
函數原型:
int cfsetispeed(struct termios *termptr, speed_t speed);
參數:
struct termios *termptr - 指向termios結構的指針
speed_t speed - 需要設置的輸入波特率
返回值:
如果成功返回0,否則返回-1
cfgetospeed函數
頭文件:
#include
函數原型:
speed_t cfgetospeed(const struct termios *termptr);
參數:
const struct termios - 指向termios結構的指針
返回值:
返回輸出波特率
cfgetispeed函數
頭文件:
#include
函數原型:
speed_t cfgetispeed(const struct termios *termptr);

文章出處:http://www.diybl.com/course/6_system/linux/Linuxjs/200875/130397_3.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章