(轉)linux串口參數設置

轉自

http://blog.csdn.net/alextanghao/article/details/3901122


在Linux環境下,串口名從ttyS0開始依次是 ttyS1、ttyS2等。

 

在打開ttyS0的時候,選項O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行; O_NDELAY表示打開串口的時候,程序並不關心另一端的串口是否在使用中。

 

 

在Linux中,打開串口設備和打開普通文件一樣,使用的是open()系統調用。

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
文件<termios.h>中定義了終端控制結構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秒的倍數)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章