㈠ linux如何指定串口號
修改/etc/udev.conf,將vendorid 綁定好
㈡ 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打開串口設備
常用的匹配類型:
㈢ 如何查看linux串口cts
在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)設置。在系統頭文件<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秒的倍數) 根據以上設置的定義,串口埠設置函數setup_com()定義如下: int setup_com(int fd){ struct termios options; tcgetattr(fd, &options); /* Set the baud rates to 38400...*/ cfsetispeed(&options, B38400); cfsetospeed(&options, B38400); /* Enable the receiver and set local mode...*/ options.c_cflag |= (CLOCAL | CREAD); /* Set c_cflag options.*/ options.c_cflag |= PARENB; options.c_cflag &= ~PARODD; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; /* Set c_iflag input options */ options.c_iflag &=~(IXON | IXOFF | IXANY); options.c_iflag &=~(INLCR | IGNCR | ICRNL); options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /* Set c_oflag output options */ options.c_oflag &= ~OPOST; /* Set the timeout options */ options.c_cc[VMIN] = 0; options.c_cc[VTIME] = 10; tcsetattr(fd, TCSANOW, &options); return 1; } 6.7.2 設置串口通信參數 串口通信參數指的是波特率、數據位、奇偶校驗位和停止位。對串口實現控制的時候同樣要用到termio結構體。下面將結合具體的代碼說明如何設置這些參數。 1.波特率設置 獲得埠波特率信息是通過cfgetispeed函數和cfgetospeed函數來實現的。cfgetispeed函數用於獲得結構體 termios_p中的輸入波特率信息,而cfgetospeed函數用於獲得結構體termios_p 中的輸出波特率信息。這兩個函數的具體信息如表 6.9所示。 表6.9 cfgetispeed函數和cfgetospeed函數 頭文件 <termios.h> <unistd.h> 函數形式 speed_t cfgetispeed(const struct termios *termios_p); speed_t cfgetospeed(const struct termios *termios_p); 返回值 成功 失敗 是否設置errno 返回termios_p結構中的輸入/輸出埠的波特率 ?1 是 cfsetispeed函數和cfsetospeed函數用於設置埠的輸入/輸出波特率。一般情況下,輸入和輸出波特率是相等的。cfsetispeed函數和cfsetospeed函數的函數聲明信息如表6.10所示。 表6.10 cfsetispeed函數和cfsetospeed函數 頭文件 <termios.h> <unistd.h> 函數形式 int cfsetispeed(struct termios *termios_p, speed_t speed); int cfsetospeed(struct termios *termios_p, speed_t speed); 返回值 成功 失敗 是否設置errno 返回termios_p結構中的輸入/輸出埠的波特率 ?1 是 cfsetispeed函數和cfsetospeed函數會修改結構體termios_p中的波特率信息,其中參數speed可以使用表6.11中所列出的宏。 表6.11 speed參數常用波特率信息 宏 定 義 波特率(單位:bit/s) 宏 定 義 波特率(單位:bit/s) B0 0 B1800 1800 B50 50 B2400 2400 B75 75 B4800 4800 B110 110 B9600 9600 B134 134 B19200 19200 B150 150 B38400 38400 B200 200 B57600 57600 B300 300
㈣ 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 提供了各種工具, 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下怎麼檢查串口號
查看串口是否可用,可以對串口發送數據比如對com1口,echo lyjie126 > /dev/ttyS0
查看串口名稱使用 ls -l /dev/ttyS* 一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認是dev下的ttyS* ,一般ttyS0對應com1,ttyS1對應com2,當然也不一定是必然的;
查看串口驅動:cat /proc/tty/drivers/serial
查看串口設備:dmesg | grep ttyS*
㈧ 如何查看linux下串口是否可用串口名稱等
查看串口驅動:cat /proc/tty/drivers/serial
查看串口設備:dmesg | grep ttyS*關於這個linux系統的學習,我一直看劉遄老師的書籍《linux就該這么學》
㈨ Linux串口調試工具--minicom
安裝完成後,請不要著急打開軟體。需先進行配置。具體步驟如下:
查看串口設備及文件許可權
linux下的所有操作面向用戶的都是文件操作,在對串口操作之前,我們應該先確認自己對該文件有沒有讀寫許可權。
linux下的usb串口命名為ttyUSB*,運行上面命令,可以看到有幾個設備掛載。
我們這里是:
只有ttuUSB0.再用lsusb查看:
usb 004正是我們掛上去的usb轉串口線纜,使用的晶元是PL2303。
但是正如上面顯示,ttyUSB0這個設備是root所有的,所以,我們以普通用戶身份打開minicom是沒法訪問該文件的。
運行sudo minicom -s便進入了minicom的配置界面,使用上下鍵選擇Serial port setup,回車。此時游標在「change which setting」後面停留,它的上面有如下菜單:
我們只需輸入上面對應的字母,就可以進如相應的菜單進行設置。設置完成,回車,游標會回到「change which setting」後面,如此重復。完成按回車返回主菜單即可。
返回主菜單後,選擇「Save setup as df1」,將其保存為默認設置,然後選擇 Exit退出。需退出後重新打開minicom,軟體才會使用上述參數進行初始化。
注意:如果沒有使用USB轉串口,而是直接使用串口,那麼Serial Device要配置為/dev/ttyS0。
如果上面設置順利,打開minicom
重新給設備上電後,此時,窗口裡就有信息列印出來了。
1)需使用Ctrl+a 進入設置狀態
2)按z進入設置菜單
(1)O鍵:打開配置選項;
(2)W鍵:自動卷屏。當顯示的內容超過一行之後,自動將後面的內容換行。這個功能在查看內核的啟動信息時很有用。
(3)C鍵:清除屏幕的顯示內容;
(4)B鍵:瀏覽minicom的歷史顯示;
(5)X鍵:退出minicom,會提示確認退出。
Ctrl + A --> O
選擇"Filenames and paths"
更多的參數,參見"man minicom"的輸出。
如果不加這個項,那麼在minicom和pc交互的時候中鍵入命令超過一行時候會被截斷,(這時候可以通過 <C-a> w 來開和關切換截斷行功能).
這樣,啟動之後我們會發現顯示的內容不是黑白的了。
這樣,啟動之後,所在minicom的輸出都會在<filename>中保留一份,如果原來文件存在,則追加,不存在則創建一個。
這樣,我們可以取代用 <C-a> * 發送命令的方式,將 <C-a> 替換成 [Alt] 或者 [ESC] .
這里,<filename>是你的腳本文件的名字,應該指定絕對路徑,否則就會在你啟動minicom的路徑下尋找。
Minicom是基於窗口的。要彈出所需功能的窗口,可按下 Ctrl-A (以下使用C-A來表示Ctrl-A),然後再按各功能鍵(a-z或A-Z)。先按C-A,再按'z',將出現一個幫助窗口,提供了所有命令的簡述。配置 minicom(-s 選項,或者C-A、O)時,可以改變這個轉義鍵,不過現在我們還是用Ctrl-A吧。
這里,只給出很少的命令,更多的交互命令參見"<C-a> z"的幫助輸出。
minicom -s 或啟動minicom之後運行 <C-a> o 來進行配置。
C:腳本文件的存放位置: <C-a> g 運行腳本時的路徑 。
D:選擇腳本程序: 默認 runscript ,也可以選擇 bash 腳本格式。
可以參考man手冊 man runscript .交互命令中可以運行" <C-a> G "來運行腳本。
參考資料 :
㈩ 如何查看linux下串口是否可用串口名稱等
在linux下查看串口可以用dmesg命令,參考下圖: 上圖中顯示有兩個串口,com1=0x3f8,com2=0x2f8 對應linux設備名稱是ttyS0和ttyS1