termios結構體各成員

2021-06-16 06:11:11 字數 1468 閱讀 5076

termios結構體內容:

成員            描述

-------------------------------------------

c_cflag 控制模式標誌

c_lflag 本地模式標誌

c_iflag 輸入模式標誌

c_oflag 輸出模式標誌

c_line line discipline

c_cc[nccs] 控制字元

c_ispeed 輸入波特率

c_ospeed 輸出波特率

在termios結構中的四個標誌控制了輸入輸出的四個不同部份。輸入模式標誌c_iflag決定如何解釋和處理接收的字元。輸出模式標誌 c_oflag決定如何解釋和處理傳送到tty裝置的字元。控制模式標誌決定裝置的一系列協議特徵,這一標誌只對物理裝置有效。本地模式標誌 c_lflag決定字元在輸出前如何收集和處理。

在串列埠傳輸中,用波特率來表示傳輸的速度,1波特表示在1秒鐘內可以傳輸1個碼元。波特率設定可以使用 cfsetispeed(&new_termios,b19200)和 cfsetospeed(&new_termios,b19200)這兩個函式來完成,預設的波特率為9600baud。 cfsetispeed()函式用來設定輸入的波特率,cfsetospeed()函式用來設定輸出的波特率。b19200是termios.h標頭檔案裡 定義的乙個巨集,表示19200的波特率。

clocal和cread是c_cflag成員中與速率相關的標誌,在串列埠程式設計中,這兩個標誌一定要有效,以確保程式在突發的作業控制或掛起時,不 會成為埠的占有都,同時串列埠的接收驅動會自動讀入資料。設定方法如下:

termios_new.c_cflag |= clocal;                 //保證程式不會成為端的佔有者

termios_new.c_cflag |= cread; //使埠能讀取輸入的資料

設定串列埠屬性不能直接賦值,要通過對termios不同成員進行"與"和"或"操作來實現。在termios.h檔案,定義了各種常量,如上面介紹 的clocal,cread。這些常量的值是掩碼,通過把這些常量與termios結構成員進行邏輯操作就可實現串列埠屬性的設定。在程式設計時用"|="來啟 用屬性,用"&=~"來取消屬性。

opost是posix定義的唯一乙個標誌,只有設定了該標誌後,其它非posix的輸出標記才會生效。

只有在本地模式標誌c_lflag中設定了iexiten時,posix沒有定義的控制字元才能在linux中使用。每個控制字元都對應乙個按鍵組 合(^c、^h等),但vmin和vtime這兩個控制字元除外,它們不對應控制符。這兩個控制字元只在原始模式下才有效。

要禁用某個控制字元,只需把它設定為_posix_vdisable即可。但該常量只在linux中有效,所以如果程式要考慮移植性的問題,請不要 使用該常量。

termios結構體說明

termios結構體中,該結構體一般包括如下的成員 tcflag t c iflag tcflag t c oflag tcflag t c cflag tcflag t c lflag cc t c cc nccs 其具體意義如下 c iflag 輸入模式標誌,控制終端輸入方式,具體引數如下所示。...

termios結構體之tcsetattr函式

tcsetattr是用於設定終端引數的函式 int tcsetattr int fd,int optional actions,const struct termios termios p tcsetattr函式用於設定終端引數。函式在成功的時候返回0,失敗的時候返回 1,並設定errno的值。引數...

termios結構體的詳細設定

termios結構體內容 成員 描述 c cflag 控制模式標誌 c lflag 本地模式標誌 c iflag 輸入模式標誌 c oflag 輸出模式標誌 c line line discipline c cc nccs 控制字元 c ispeed 輸入波特率 c ospeed 輸出波特率在ter...