Linux串口相關(guān)的操作及綁定

@toc

操作串口出現(xiàn)權(quán)限不足情況處理

sudo usermod -aG dialout 用戶名 #把此用戶名加入dialout用戶組艘儒,可無需sudo操作串口

要查看某個串口的波特率等信息

可在控制臺輸入

stty -F /dev/ttyS0 -a  #ttyS0為要查看的串口

也可以用stty設置串口參數(shù)

stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8
  • 該命令將串口1(/dev/ttyS0)設置成115200波特率,8位數(shù)據(jù)模式。一般情況下設置這兩個參數(shù)就可以了懒浮,如果顯示數(shù)據(jù)亂碼捏萍,可能還需要設置其它參數(shù),使用man查看stty其它設置選項。

cat打印串口數(shù)據(jù)

使用后相當于串口回傳比规,發(fā)什么回什么

cat /dev/ttyS0

發(fā)送數(shù)據(jù)

echo "xxx" > /dev/ttyS2

排查問題常用方法

1吱窝、查看串口是否可用

可以對串口發(fā)送數(shù)據(jù)比如對com1口

echo "x" /dev/ttyS0

2讥邻、查看串口名稱使用

ls -l /dev/ttyS*

一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認是dev下的ttyS* ,一般ttyS0對應com1院峡,ttyS1對應com2兴使,當然也不一定是必然的;

3照激、查看串口驅(qū)動

cat /proc/tty/drivers/serial

4发魄、查看串口設備

dmesg | grep ttyS*

5、查一下板子上的串口有沒有設備

grep tty /proc/devices

如果有ttyS設備俩垃,再看/dev/有沒有ttyS*励幼,如沒有就建立一個:

mknod /dev/ttyS0 c 4 64

如果板子的設備中沒有標準串口設備ttyS0,也沒有ttySAC0口柳。/dev下應該有一個USB串口:/dev/ttyUSB0.

當一個串行卡或數(shù)據(jù)卡被偵測到時苹粟,它會被指定成為第一個可用的串行設備。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2)跃闹,這完成看原已內(nèi)建的串口數(shù)目嵌削。ttyS*設備會被報告在/var/run/stab內(nèi)。

PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC

6、寫的串口程序不能正常接收發(fā)送數(shù)據(jù)

可能是linux下的串口設備沒有打開姜凄,需要改變串口設備
的權(quán)限,或者根據(jù)文章頭添加用戶到組處理

chmod 777 /dev/ttyUSB0

串口號綁定

可以通過以下命令 查看 板子上的硬件端口的內(nèi)核設備名

udevadm info --attribute-walk --name=/dev/ttyUSB0

該條命令會將 ttyUSB0所對應的硬件端口的kernel設備名 顯現(xiàn)出來艇劫, 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0

cd /etc/udev/rules.d/
vim usb1.rules
ACTION=="add",ENV{ID_BUS}=="usb",ENV{ID_PATH_TAG}=="platform-1c1d000_usb-usb-0_1_1_1_0",SYMLINK+="ttyUSBPort1"  #固定串口號

參考博客

腳本方式

  • cmd.sh是利用bash腳本獲取/sys/class/tty/ttyUSB*的一些信息保存在device_usb.txt中
  • getUSB.py是通過device_usb.txt中的信息惩激,獲取到當前掛著在端口3-1.1上的是ttyUSB0還是ttyUSB1并保存在usbdev 中

cmd.sh如下:

#!/bin/bash
declare -i a=0
declare -i b=0 
while [[ ! -e "/sys/class/tty/ttyUSB0" ]]
do
sudo sleep 0.01s
a=a+1
if [ $a -eq 300 ];then  #等待一段時間沒有檢測ttyUSB0設備到會自動跳出while
break
fi
done

while [[ ! -e "/sys/class/tty/ttyUSB1" ]]
do
sudo sleep 0.01s
b=b+1
if [[ $b -eq 300||$a -ne 0 ]];then  #if USB0 been detected ,also get out of while
break
fi
done


if [[ ! -e /sys/class/tty/ttyUSB0&&! -e /sys/class/tty/ttyUSB1 ]]; then #如果不存在ttyUSB設備
echo "Not have ttyUSB0 or not have ttyUSB1"
else                                   #如果完美檢測到了兩個ttyUSB設備店煞,則將信息log到device_usb.txt當中
tty1=$(ls -l /sys/class/tty/ttyUSB0) 
tty2=$(ls -l /sys/class/tty/ttyUSB1)

sudo ls -l /sys/class/tty/ttyUSB0 /sys/class/tty/ttyUSB1 > ./device_usb.txt
fi

if [ ! -n "$tty1" ] ;then   # "! -n" shows blank var  #非空檢測
echo "tty1 is empty"
fi
#delay 0.01s to make sure the device_usb.txt complete
sudo sleep 0.01s
#remove the old USB device shortcut

if [ ! -e "/dev/ttydata" ] ;then # 如果/dev/ttydata本身不存在
echo "-------------/dev/ttydata not found"
else                                     #如果存在蟹演,則需刪除之,然后重新創(chuàng)建之
echo "/dev/ttydata is exist"
sudo rm /dev/ttydata
fi

./getUSB.py 調(diào)用當前路徑下的getUSB.py這個Python語言浅缸,明確此次是哪個,ttyUSB0,或者ttyUSB1掛載在端口3-1.1上

usbdev=$(cat ./usbdev) #獲取到這個設備
echo "the device is : "
echo $usbdev

sudo ln -s /dev/$usbdev /dev/ttydata #將這個設備軟連接到/dev/ttydata以后每次打開這個ttydata即可

getUSB.py:

#!/usr/bin/python
#coding:utf-8
import re  #正在表達式
sss = open("./device_usb.txt","rb") #打開device_usb.txt設備轨帜,并讀取內(nèi)容
www = open("./usbdev","wb")  #當前路徑下創(chuàng)建usbdev文件,后續(xù)會寫入內(nèi)容
s_read = sss.read()  usb3/3-1/3-1.1/
r = r"usb3/3-1/3-1\.1.+(ttyUSB[0-9])"
#正則中“.”需要轉(zhuǎn)義衩椒,所以使用“\.”表示“.”
#這個規(guī)則是找到usb3/3-1/3-1.1/這個字符串后面緊跟的是此次上電生成的ttyUSB0或者ttyUSB1
output = re.findall(r,s_read)
www.write(output[0]) #將結(jié)果寫到usbdev中
www.close()
sss.close()

完成之后 蚌父,設置開機啟動cmd.sh(在/etc/rc.local中設置)則每次開機之后,會從/dev/ttydata獲取到固定端口的數(shù)據(jù)

綁定硬件序列號毛萌,查找serial(適用于相同生產(chǎn)商生產(chǎn)的相同USB串口)

方式一

lsusb #查看自己的USB串口ID苟弛。我的USB串口是0403:6001
#編輯規(guī)則文件
vim /etc/udev/rules.d/myusb.rules  #這里注意加s

寫入內(nèi)容如下:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout",  SYMLINK+="485_serial" #CP210X
ls -l /dev |grep ttyUSB

方式二

udevadm info --attribute-walk --name=/dev/ttyUSB0

我的硬件序列號:ATTRS{serial}=="FTSYWCXZ"這個號是唯一的

vim /etc/udev/rules.d/usb.rules
ATTRS{serial}=="FTSYWCXZ", MODE:="0777", GROUP:="dialout", SYMLINK+="usb_0"
ls -l /dev |grep ttyUSB

可以通過/dev/usb_0打開串口設備

常用的匹配類型:

  • BUS:匹配總路類型,比如PCI USB等

  • KERNEL:- 匹配Kernel設備名阁将,比如hda hdb.

  • DRIVER :- 匹配Kernel的驅(qū)動程序名

  • SUBSYSTEM: - 匹配子系統(tǒng)名膏秫。

  • ID :- 匹配總路系統(tǒng)的ID (e.g. PCI bus ID)。

  • PLACE :- 匹配物理位置 (對USB很有用)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末做盅,一起剝皮案震驚了整個濱河市缤削,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吹榴,老刑警劉巖亭敢,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異图筹,居然都是意外死亡帅刀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門远剩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扣溺,“玉大人,你說我怎么就攤上這事瓜晤∽队啵” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵痢掠,是天一觀的道長哈恰。 經(jīng)常有香客問我,道長志群,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任蛔钙,我火速辦了婚禮锌云,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吁脱。我一直安慰自己桑涎,他們只是感情好彬向,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攻冷,像睡著了一般娃胆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上等曼,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天里烦,我揣著相機與錄音,去河邊找鬼禁谦。 笑死胁黑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的州泊。 我是一名探鬼主播丧蘸,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼遥皂!你這毒婦竟也來了力喷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤演训,失蹤者是張志新(化名)和其女友劉穎弟孟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇祭,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡披蕉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乌奇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没讲。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖礁苗,靈堂內(nèi)的尸體忽然破棺而出爬凑,到底是詐尸還是另有隱情,我是刑警寧澤试伙,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布嘁信,位于F島的核電站,受9級特大地震影響疏叨,放射性物質(zhì)發(fā)生泄漏潘靖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一蚤蔓、第九天 我趴在偏房一處隱蔽的房頂上張望卦溢。 院中可真熱鬧,春花似錦、人聲如沸单寂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宣决。三九已至蘸劈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尊沸,已是汗流浹背威沫。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椒丧,地道東北人壹甥。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像壶熏,于是被迫代替她去往敵國和親句柠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 因為現(xiàn)在電腦基本不配備串行接口棒假,所以溯职,usb轉(zhuǎn)串口成為硬件調(diào)試時的必然選擇。目前知道的帽哑,CH340,PL2303的...
    顏水花生閱讀 3,302評論 0 1
  • [toc] 因為現(xiàn)在電腦基本不配備串行接口谜酒,所以,usb轉(zhuǎn)串口成為硬件調(diào)試時的必然選擇妻枕。目前知道的僻族,PL2303的...
    孤逐王閱讀 8,525評論 0 7
  • 首先 當前的ubuntu基本的串口驅(qū)動是有集成的,確認usb串口是否連接正常屡谐,用minicom打開 /dev/tt...
    黑鼠_DEAN閱讀 4,052評論 0 1
  • 大學的時候述么,幫朋友寫的操作系統(tǒng)調(diào)研的作業(yè),最近整理過去的文檔時候偶然發(fā)現(xiàn)愕掏,遂作為博客發(fā)出來度秘。 從串口驅(qū)動到Linu...
    free_will閱讀 7,401評論 7 59
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭饵撑,有人歡樂有人憂愁剑梳,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,544評論 28 53