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不同成員進行"與"和"或"操作來實現。在termios.**件,定義了各種常量,如上面介紹 的clocal,cread。這些常量的值是掩碼,通過把這些常量與termios結構成員進行邏輯操作就可實現串列埠屬性的設定。在程式設計時用"|=「來啟 用屬性,用」&=~"來取消屬性。termios_new.c_cflag |= cread; //使埠能讀取輸入的資料
opost是posix定義的唯一乙個標誌,只有設定了該標誌後,其它非posix的輸出標記才會生效。
只有在本地模式標誌c_lflag中設定了iexiten時,posix沒有定義的控制字元才能在linux中使用。每個控制字元都對應乙個按鍵組 合(c、h等),但vmin和vtime這兩個控制字元除外,它們不對應控制符。這兩個控制字元只在原始模式下才有效。
要禁用某個控制字元,只需把它設定為_posix_vdisable即可。但該常量只在linux中有效,所以如果程式要考慮移植性的問題,請不要 使用該常量。
termios_new.c_cflag |= parenb; //奇校驗
termios_new.c_cflag &= ~parodd;
termios_new.c_cflag |= parenb; //偶校驗
termios_new.c_cflag &= ~parodd;
termios結構體的詳細設定
termios結構體內容 成員 描述 c cflag 控制模式標誌 c lflag 本地模式標誌 c iflag 輸入模式標誌 c oflag 輸出模式標誌 c line line discipline c cc nccs 控制字元 c ispeed 輸入波特率 c ospeed 輸出波特率在ter...
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結構體各成員
termios結構體內容 成員 描述 c cflag 控制模式標誌 c lflag 本地模式標誌 c iflag 輸入模式標誌 c oflag 輸出模式標誌 c line line discipline c cc nccs 控制字元 c ispeed 輸入波特率 c ospeed 輸出波特率 在te...