Linux RS-232 程式設計 6-1 終端機介面 終端機介面又稱為TTY介面,用來讓Linux系統透過RS-232串列埠連接數據機,通過電話線路與遠端的電腦系統相連接。終端機介面有二種模式:正規(canonical)模式和非正規(non-canonical)模式。 模式 說明 正規模式 又稱為cooked模式。在這種模式中,終端設備會處理特殊字元,且會以一次一列的方式將輸入傳給應用程式。例如Linux的shell指令。 非正規模式 又稱為raw模式。在這種模式中,終端設備不會處理特殊字元,且會以一次一個字元的方式將輸入傳給應用程式。例如在Linux使用vim編輯程式。 串列埠檔案 在Linux中針對所有的周邊裝置都提供了[裝置檔案]供使用者存取。若要存取TTY串列埠只要開啟相關的[裝置檔案]即可。 在Linux中,每一個TTY串列埠都會對應到一個或多個[裝置檔案],[裝置檔案]放在[/dev]目錄中。相關的裝置檔案如下: 裝置檔案 說明 /dev/ttyS0 串列埠的COM1 /dev/typS1 串列埠的COM2 開啟通訊埠 在Linux中將串列埠視為一個檔案,可以使用open()函數來開啟串列埠。底下的程式用來開啟PC的COM1串列通訊埠。 #include #include #include #include #include #include int open_port(void) { int fd; fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY); if(fd == -1){ perror("open error"); } retuen(fd); } 其中 O_NOCTTY:告訴Linux這個程式不想控制TTY介面,如果不設定這個旗標,有些輸入(例如鍵盤的abort)信號可能影響程式。 O_NDELAY:告訴Linux這個程式不介意RS-232的DCD信號的狀態。如果不設定這個旗標,程式會處於speep狀態,直到RS-232有DCD信號進來。 6-2 Termios結構 在Linux中設定串列埠的參數,例如鮑率、字元長度等,可以透過POSIX標準終端介面,...