簡單的運(yùn)行 dmesg 命令
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供欽州網(wǎng)站建設(shè)、欽州做網(wǎng)站、欽州網(wǎng)站設(shè)計(jì)、欽州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、欽州企業(yè)網(wǎng)站模板建站服務(wù),十載欽州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
$ 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 是一個(gè)程序用于設(shè)定并/或報(bào)告某個(gè)串口關(guān)聯(lián)的配置信息。該信息包括串口用到的I/O 端口和中斷號(hào),以及Break鍵是否應(yīng)被解釋為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選項(xiàng)的setserial幫助找到你的Linux板子上的物理串口。
Linux 串口控制臺(tái)程序
一旦串口被確定了,你就能使用許多的工具來配置Linux板子:
minicom- 用于控制modem和連接到dump 設(shè)備的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一個(gè)內(nèi)建智能PPP 撥號(hào)器。
getty / agetty - agetty 打開一個(gè) tty 端口, 提示登錄名稱并調(diào)用 /bin/login 命令。
grub / lilo configuration - 配置串口為系統(tǒng)控制臺(tái)。
用CAT命令查看
#cat /proc/tty/driver/serial
如果需要配置串口參數(shù),minicom是個(gè)很好的選擇。
一、安裝
sudo apt-get install minicom
二、配置
配置minicom的參數(shù)
運(yùn)行$ sudo minicom -s
便進(jìn)入了minicom的配置界面,使用上下鍵選擇Serial port setup,回車。此時(shí)光標(biāo)在“change which setting”后面停留,它的上面有如下菜單:
只需輸入上面對(duì)應(yīng)的字母,就可以進(jìn)如相應(yīng)的菜單進(jìn)行設(shè)置。設(shè)置完成,回車,光標(biāo)會(huì)回到“change which setting”后面,如此重復(fù)。完成按回車返回主菜單即可。
和文件一樣,open /dev/ttyS0就是串口1 然后設(shè)置波特率,停止位 奇偶校驗(yàn)?zāi)切?,之后read write就可以了 頭文件是termios.h
望能幫到你。
由于公司產(chǎn)品要做行業(yè)市場,而產(chǎn)品與行業(yè)用戶間PC的通訊為RS232串口方式。而行業(yè)用戶那里的PC都沒有串行口,而且行業(yè)用戶PC操作系統(tǒng)為Turbo
Linux。怎么辦?
辦公室內(nèi)有臺(tái)機(jī)器是RedHat
Linux
9.0
一個(gè)是
Fedora
Core
5
。就先在這兩個(gè)系統(tǒng)上試驗(yàn)吧。這兩臺(tái)電腦上各自本身就有2個(gè)RS232串口。
一、PCI轉(zhuǎn)串口卡安裝
型號(hào)NetMos
Nm9835CV
1、插入PCI卡到主機(jī)
2、啟動(dòng)
Linux,打開終端
3、輸入命令:#setserial
/dev/ttyS0
-a
(COM-1)
顯示內(nèi)容:/dev/ttyS0,
Line
0,
UART:
16550A,
Port:
0x3f8,
irq:
4
Baud_base:
115200,
clos_delay:
50,
divisor:
closing_wait:
3000,
closing_wait2:
infinite
Flags:
spd_normal
skip_test
4、輸入命令:#setserial
/dev/ttyS2
-a
(COM-3)
顯示內(nèi)容:/dev/ttyS2,
Line
2,
UART:
unknown,
Port:
0x3e8,
irq:
4
Baud_base:
115200,
clos_delay:
50,
divisor:
closing_wait:
3000,
closing_wait2:
infinite
Flags:
spd_normal
skip_test
第3、4步操作的目的主要是對(duì)主機(jī)自帶串口及PCI擴(kuò)展串口的區(qū)別。區(qū)別在于4顯示的內(nèi)容中UART:未unknow。不過若您檢測這一步的時(shí)候
UART為16550A而不是unknow,證明你的系統(tǒng)已經(jīng)認(rèn)識(shí)了擴(kuò)展的串口,不需要進(jìn)一步設(shè)置,直接跳入第8步測試就可以了。
5、需要輸入命令查看一下您當(dāng)前PCI檢測的狀態(tài),以便對(duì)擴(kuò)展串口進(jìn)行設(shè)置
#more
/proc/pci
會(huì)顯示出一堆的信息,不要因?yàn)榭床欢鴩槈牧?。只要看到類似于這個(gè)PCI的信息,比如:PCI
communication。。?;蛘連oard
with
Nm9835CV
part。。。
可能就是這個(gè)卡了,主要看看它的終端是多少,即irq多少及分配的地址是多少。例如:(不一定完全一樣)
Board
with
Nm9835CV
part
irq:11
I/O
at
0xc000
[0xc001]
serial
port
1
I/O
at
0xc400
[0xc401]
serial
port
2
I/O
at
0xc800
[0xc801]
not
used
I/O
at
0xd000
[0xd001]
not
used
I/O
at
0xd400
[0xd401]
not
used
I/O
at
0xd800
[0xd801]
not
used
6、知道PCI擴(kuò)展卡的終端為11
串口1地址為0xc000
串口2地址為0xc400..
就可以設(shè)置擴(kuò)展的串口了。輸入命令:
setserial
/dev/ttyS2
port
0xc000
UART
16550A
irq
11
Baud_base
115200
另一個(gè)串口也類似的這么操作
7、設(shè)置完畢后,就可以看看設(shè)置的情況了,輸入第2步的命令看看,UART是否就是16500A
而不是
unknow了,如果是16500A恭喜,可能設(shè)置好咯,如果不是那就再檢查一下吧。
8、設(shè)置好了后是不是需要測試一下是否能夠通訊呢?最好的辦法是兩臺(tái)pc相連。如果pc為windows操作系統(tǒng)就用超級(jí)終端,是linux呢就用minicom吧
9、裝有l(wèi)inux的機(jī)器,首先需要設(shè)置一下監(jiān)聽的串口參數(shù),輸入命令
#minicom
-s
進(jìn)入界面后有個(gè)框彈出來,如果你還認(rèn)識(shí)點(diǎn)英文單詞的話,就回知道選擇哪個(gè)的。應(yīng)該是第三個(gè)吧,串口設(shè)置。
將第一行更改為
/dev/ttyS2
波特率也更改您所需要的。
更改完后保存,保存的那個(gè)菜單應(yīng)該是
save
...
df1
最后
exit
10、在另外一臺(tái)機(jī)器發(fā)送數(shù)據(jù),這臺(tái)機(jī)器minicom界面就能夠收到信息了,成功后覺得挺有意思。另外不要把兩個(gè)COM順序弄翻了,如果弄錯(cuò)了哪個(gè)是COM3
COM4測試可就不靈便咯。
@ toc
可在控制臺(tái)輸入
也可以用stty設(shè)置串口參數(shù)
使用后相當(dāng)于串口回傳,發(fā)什么回什么
發(fā)送數(shù)據(jù)
可以對(duì)串口發(fā)送數(shù)據(jù)比如對(duì)com1口
一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認(rèn)是dev下的ttyS* ,一般ttyS0對(duì)應(yīng)com1,ttyS1對(duì)應(yīng)com2,當(dāng)然也不一定是必然的;
如果有ttyS設(shè)備,再看/dev/有沒有ttyS*,如沒有就建立一個(gè):
如果板子的設(shè)備中沒有標(biāo)準(zhǔn)串口設(shè)備ttyS0,也沒有ttySAC0。/dev下應(yīng)該有一個(gè)USB串口:/dev/ttyUSB0.
當(dāng)一個(gè)串行卡或數(shù)據(jù)卡被偵測到時(shí),它會(huì)被指定成為第一個(gè)可用的串行設(shè)備。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2),這完成看原已內(nèi)建的串口數(shù)目。ttyS*設(shè)備會(huì)被報(bào)告在/var/run/stab內(nèi)。
PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC
可能是linux下的串口設(shè)備沒有打開,需要改變串口設(shè)備
的權(quán)限,或者根據(jù)文章頭添加用戶到組處理
可以通過以下命令 查看 板子上的硬件端口的內(nèi)核設(shè)備名
該條命令會(huì)將 ttyUSB0所對(duì)應(yīng)的硬件端口的kernel設(shè)備名 顯現(xiàn)出來, 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0
cmd.sh如下:
./getUSB.py 調(diào)用當(dāng)前路徑下的getUSB.py這個(gè)Python語言,明確此次是哪個(gè),ttyUSB0,或者ttyUSB1掛載在端口3-1.1上
getUSB.py:
完成之后 ,設(shè)置開機(jī)啟動(dòng)cmd.sh(在/etc/rc.local中設(shè)置)則每次開機(jī)之后,會(huì)從/dev/ttydata獲取到固定端口的數(shù)據(jù)
方式一
寫入內(nèi)容如下:
方式二
我的硬件序列號(hào):ATTRS{serial}=="FTSYWCXZ"這個(gè)號(hào)是唯一的
可以通過/dev/usb_0打開串口設(shè)備
常用的匹配類型: