古詩詞大全網 - 口號大全 - Linux串口連接ttyS0、ttyS1是什麽意思?

Linux串口連接ttyS0、ttyS1是什麽意思?

這是通信串口名稱。

在Linux環境下,串口名從ttyS0開始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作為通信串口。在打開ttyS0的時候,選項 O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行; O_NDELAY表示打開串口的時候,程序並不關心另壹端 的串口是否在使用中。在Linux中,打開串口設備和打開普通文件壹樣,使用的是open()系統調用。比如我麽打開串口設備1也就是COM1,只需要:

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );

打開的串口設備有很多設置選項。本文中使用int setup_com(int fd)設置。在系統頭文件中 定義了終端控制結構struct termios,tcgetattr()和tcsetattr()兩個系統函數獲得和設置這些屬性。結構 struct termios中的域描述的主要屬性包括:

c_cflag : 控制選項

c_lflag : 線選項

c_iflag : 輸入選項

c_oflag :輸出選項

c_cc :控制字符

c_ispeed :輸入數據波特率

c_ospeed :輸出數據波特率

如果要設置某個選項,那麽就使用"|=“運算,如果關閉某個選項就使用”&=“和”~"運算。本文使用的各個選項的意義定義如下:

c_cflag:

CLOCAL 本地模式,不改變端口的所有者

CREAD 表示使能數據接收器

PARENB 表示偶校驗

PARODD 表示奇校驗

CSTOPB 使用兩個停止位

CSIZE 對數據的bit使用掩碼

CS8 數據寬度是8bit

c_lflag:

ICANON 使能規範輸入,否則使用原始數據(本文使用)

ECHO 回送(echo)輸入數據

ECHOE 回送擦除字符

ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信號

c_iflag:

IXON 使能輸出軟件控制

IXOFF 使能輸入軟件控制

IXANY 允許任何字符再次開啟數據流

INLCR 把字符NL(0A)映射到CR(0D)

IGNCR 忽略字符CR(0D)

ICRNL 把CR(0D)映射成字符NR(0A)

c_oflag: OPOST 輸出後處理,如果不設置表示原始數據(本文使用原始數據)

c_cc[VMIN]: 最少可讀數據

c_cc[VTIME]: 等待數據時間(10秒的倍數)