資源描述:
《linux串口程序設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、一、數(shù)據(jù)成員termios函數(shù)族提供了一個常規(guī)的終端接口,用于控制非同步通信端口。這個結(jié)構(gòu)包含了至少下列成員:tcflag_tc_iflag;/*輸入模式*/tcflag_tc_oflag;/*輸出模式*/tcflag_tc_cflag;/*控制模式*/tcflag_tc_lflag;/*本地模式*/cc_tc_cc[NCCS];/*控制字符*/structtermios{unsignedshortc_iflag;/*輸入模式標志*/unsignedshortc_oflag;/*輸出模式標志*/unsignedshortc_c
2、flag;/*控制模式標志*/unsignedshortc_lflag;/*區(qū)域模式標志或本地模式標志或局部模式*/unsignedcharc_line;/*行控制linediscipline*/unsignedcharc_cc[NCC];/*控制字符特性*/};二、作用這個變量被用來提供一個健全的線路設(shè)置集合,如果這個端口在被用戶初始化前使用.驅(qū)動初始化這個變量使用一個標準的數(shù)值集,它拷貝自tty_std_termios變量.tty_std_termos在tty核心被定義為:structtermiostty_std_term
3、ios={.c_iflag=ICRNL
4、IXON,.c_oflag=OPOST
5、ONLCR,.c_cflag=B38400
6、CS8
7、CREAD
8、HUPCL,.c_lflag=ISIG
9、ICANON
10、ECHO
11、ECHOE
12、ECHOK
13、ECHOCTL
14、ECHOKE
15、IEXTEN,.c_cc=INIT_C_CC};這個structtermios結(jié)構(gòu)用來持有所有的當前線路設(shè)置,給這個tty設(shè)備的一個特定端口.這些線路設(shè)置控制當前波特率,數(shù)據(jù)大小,數(shù)據(jù)流控設(shè)置,以及許多其他值.三、成員的值(一)c_iflag標志常量:Inputmode
16、(輸入模式)inputmode可以在輸入值傳給程序之前控制其處理的方式。其中輸入值可能是由序列埠或鍵盤的終端驅(qū)動程序所接收到的字元。我們可以利用termios結(jié)構(gòu)的c_iflag的標志來加以控制,其定義的方式皆以O(shè)R來加以組合。IGNBRK:忽略輸入中的BREAK狀態(tài)。(忽略命令行中的中斷)BRKINT:(命令行出現(xiàn)中斷時,可產(chǎn)生一插斷)如果設(shè)置了IGNBRK,將忽略BREAK。如果沒有設(shè)置,但是設(shè)置了BRKINT,那么BREAK將使得輸入和輸出隊列被刷新,如果終端是一個前臺進程組的控制終端,這個進程組中所有進程將收到SIGI
17、NT信號。如果既未設(shè)置IGNBRK也未設(shè)置BRKINT,BREAK將視為與NUL字符同義,除非設(shè)置了PARMRK,這種情況下它被視為序列377。IGNPAR:忽略楨錯誤和奇偶校驗錯。PARMRK:如果沒有設(shè)置IGNPAR,在有奇偶校驗錯或楨錯誤的字符前插入377。如果既沒有設(shè)置IGNPAR也沒有設(shè)置PARMRK,將有奇偶校驗錯或楨錯誤的字符視為。INPCK:啟用輸入奇偶檢測。ISTRIP:去掉第八位。INLCR:將輸入中的NL翻譯為CR。(將收到的換行符號轉(zhuǎn)換為Return)IGNCR:忽略輸入
18、中的回車。ICRNL:將輸入中的回車翻譯為新行(除非設(shè)置了IGNCR)(否則當輸入信號有CR時不會終止輸入)。IUCLC:(不屬于POSIX)將輸入中的大寫字母映射為小寫字母。IXON:啟用輸出的XON/XOFF流控制。IXANY:(不屬于POSIX.1;XSI)允許任何字符來重新開始輸出。(?)IXOFF:啟用輸入的XON/XOFF流控制。IMAXBEL:(不屬于POSIX)當輸入隊列滿時響零。Linux沒有實現(xiàn)這一位,總是將它視為已設(shè)置。(二)c_oflag標志常量:Outputmode(輸出模式)Outputmode主要
19、負責控制輸出字元的處理方式。輸出字元在傳送到序列埠或顯示器之前是如何被程序來處理。輸出模式是利用termios結(jié)構(gòu)的c_oflag的標志來加以控制,其定義的方式皆以O(shè)R來加以組合。OPOST:啟用具體實現(xiàn)自行定義的輸出處理。OLCUC:(不屬于POSIX)將輸出中的小寫字母映射為大寫字母。ONLCR:(XSI)將輸出中的新行符映射為回車-換行。OCRNL:將輸出中的回車映射為新行符ONOCR:不在第0列輸出回車。ONLRET:不輸出回車。OFILL:發(fā)送填充字符作為延時,而不是使用定時來延時。OFDEL:(不屬于POSIX)填
20、充字符是ASCIIDEL(0177)。如果不設(shè)置,填充字符則是ASCIINUL。NLDLY:新行延時掩碼。取值為NL0和NL1。CRDLY:回車延時掩碼。取值為CR0,CR1,CR2,或CR3。TABDLY:水平跳格延時掩碼。取值為TAB0,TAB1,TAB2,TAB3(或X