『壹』 如何查看linux下串口是否可用串口名稱等
在linux下胡族查看串口可以用dmesg命令,參考下褲衫弊圖:塌殲
上圖中顯示有兩個串口,com1=0x3f8,com2=0x2f8 對應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秒的倍數)
『叄』 如何在Linux檢查並使用串口
linux的串口一般命名為 /dev/tty???
linux的串口調試軟體可以使用minicon
或者putty。
『肆』 查看linux下有多少可用的串口
在linux下查看串口可以用dmesg命令,參考下緩數圖: 上圖中顯示有兩個串口,com1=0x3f8,com2=0x2f8 對應信哪螞linux設備名滑埋稱是ttyS0和ttyS1
『伍』 如何在Linux檢查並使用串口
linux 提供了各種工具, Linux 使用 ttySx 作為一個串口設備的名稱。例如,COM1 (DOS/Windows 名字) 是 ttyS0, COM2 是 ttyS1 等等。
任務: 顯示檢測到的系統串口支持
簡單的運行 dmesg 命令
$ dmesg | grep tty
輸出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A
setserial 命令
setserial 是一個程序用於設定並/或報告某個串口關聯的配置信息。該信息包括串口用到的I/O 埠和中斷號,以及Break鍵是否應被解釋為Secure Attention Key 等等。 僅僅是輸出如下的命令:
$ setserial -g /dev/ttyS[0123]
輸出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
帶-g選項的setserial幫助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被確定了,你就能使用許多的工具來配置Linux板子:
minicom- 用於控制modem和連接到mp 設備的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一個內建智能PPP 撥號器。
getty / agetty - agetty 打開一個 tty 埠, 提示登錄名稱並調用 /bin/login 命令。
grub / lilo configuration - 配置串口為系統控制台。
『陸』 linux 串口驅動程序術語介紹
在Linux中經常碰到「控制台」、「終端」、「console」、「tty」、「terminal」等術語,也經常使用到這些設備文件:ldevconsole、/dev/ttySACO、/dev/tty0等。要理解這些術語,需要從以前的計算機說起。
最初的計算機價格昂貴,一台計算機通常連接上多套鍵盤和顯示器供多人使用。在以前專門有這種可以連上一台電腦的設備,它只有顯示器和鍵盤,外加簡單的處理電路,本身不具有處理計算機信息的能力。用戶通過它連接到計算機上(通常是通過串口),然後登錄系統,並對計算機進行操作。這樣一台只有輸入、顯示部件(比如鍵盤和顯示器)並能夠連接到計算機的設備就叫做終端。tty 是Teletype 的縮寫,Teletype是最早出現的一種終端設備,很像電傳打字機。在Linux中,就用tty來表示「終端」,比如內核文件tty_io.c、tty _ioctl.c等都是與「終端」相關的驅動程序;設備文件/dev/ttySACO、/dev/tty0等也表示某類終端設備。「console」的意思即為「控制台」,顧名思義,控制台就是用戶與系統進行交互的設備,這和終端的作用相似。實際上,控制台與終端相比,也只是多了一項功能:它可以顯示系統信息,比如內核消息、後台服務消息。從硬體上看,控制台與終端都是具備輸入、顯示功能的設備,沒有區別。「控制台」、「終端」、「控制終端」這些名詞經常混著用,表示的是同一個意思。
控制台與終端的區別體現在軟體.上,Linux內核從很早以前發展而來,代碼中仍保留了「控制台」、「終端」的概念。啟動Linux內核前傳入的命令行參數「console=…」就是用來指定「控制台」的。控制台在tty 驅動初始化之前就可以使用了,它最開始的時候被用來顯示內核消息(比如 printk 函數輸出的消息)。
『柒』 linux查找串口
1、設備入口
可以查/dev/ttyS* 、/dev/*uart*(主設備號4或者204),第一串口一般為ttyS0、*uart0等
USB轉串口設備一般為/dev/ttyUSB*(主設備號188),第一口一般為ttyUSB0
2、以上/dev下只是串口的入口,具體設備存在與否需要按關鍵字(ttyS、ttyUSB、uart)查詢/proc/devices以確定。
3、串口為通訊埠,有多個串口設備時,要確定正在被連接的串口是哪個,需要檢測一下,如:
cat /dev/ttyS0
『捌』 如何查看linux下串口是否可用串口名稱等
在linux下查看串口可以用dmesg命令,參考下圖: 上圖中顯示有兩個串口,com1=0x3f8,com2=0x2f8 對應linux設備名稱是ttyS0和ttyS1
『玖』 linux下當usb口插入時如何得到串口轉usb的設備名稱
先獲取一下/dev的列表, 然後得到插播事件後,
在獲取一下當前的/dev列表,然後做一下比較
linux系統會自動識別岩模芹USB介面為串口磁碟sda(通常為sda1,可通過fdisk -l命令查詢),掛載就可用。 例:新建掛載目錄mkdir /mnt/usb,掛載mount /碼仿dev/sda1 /mnt/usb,用完卸粗畢載掛起點unmount /dev/sda1 /mnt/usb。
『拾』 Linux串口相關的操作及綁定
@ toc
可在控制台輸入
也可以用stty設置串口參數
使用後相當於串口回傳,發什麼回什麼
發送數據
可以對串口發送數據比如對com1口
一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認是dev下的ttyS* ,一般ttyS0對應com1,ttyS1對應com2,當然也不一定是必然的;
如果有ttyS設備,再看/dev/有沒有ttyS*,如沒有就建立一個:
如果板子的設備中沒有標准串口設備ttyS0,也沒有ttySAC0。/dev下應該有一個USB串口:/dev/ttyUSB0.
當一個串列卡或數據卡被偵測到時,它會被指定成為第一個可用的串列設備。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2),這完成看原已內建的串口數目。ttyS*設備會被報告在/var/run/stab內。
PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC
可能是linux下的串口設備沒有打開,需要改變串口設備
的許可權,或者根據文章頭添加用戶到組處理
可以通過以下命令 查看 板子上的硬體埠的內核設備名
該條命令會將 ttyUSB0所對應的硬體埠的kernel設備名 顯現出來, 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0
cmd.sh如下:
./getUSB.py 調用當前路徑下的getUSB.py這個Python語言,明確此次是哪個,ttyUSB0,或者ttyUSB1掛載在埠3-1.1上
getUSB.py:
完成之後 ,設置開機啟動cmd.sh(在/etc/rc.local中設置)則每次開機之後,會從/dev/ttydata獲取到固定埠的數據
方式一
寫入內容如下:
方式二
我的硬體序列號:ATTRS{serial}=="FTSYWCXZ"這個號是唯一的
可以通過/dev/usb_0打開串口設備
常用的匹配類型: