一、查看本機串口信息
串口在 /dev 目錄中,查看串口是否在使用,可以用命令
ls -l /dev/ttyS*
一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認是dev下的ttyS* ,一般ttyS0對應com1,ttyS1對應com2,當然也不一定是必然的;
查看串口設備:
dmesg | grep ttyS
二、串口調(diào)試軟件
Windows下的串口調(diào)試軟件有好多,Linux下資源相對較少,不過也有那么幾個好用的。
1. minicom
聽說它功能很強大,但它沒有UI界面,開始用還不太順手。安裝:
sudo apt install minicom
配置:
sudo minicom -s
界面如下圖:
使用方向鍵 選擇 Serial port setup,按Enter鍵,進入設置環(huán)境,如下圖
輸入a或者A,選擇串口設備,如果的是USB轉(zhuǎn)串口,并且接到了COM1上,將/dev/tty8修改為/dev/ttyUSB0
注意:使用USB轉(zhuǎn)串口,那么串口COM1對應ttyUSB0, COM2對應ttyUSB1;如果沒有使用USB轉(zhuǎn)串口,而是直接使用串口,那么串口COM1對應ttyS0, COM2對應ttyS1。
配置完串口設備后,按Enter鍵,再輸入E,配置波特率,按默認配置即可 115200 8N1 (波特率:115200,數(shù)據(jù)位:8,奇偶校驗位:N 無,停止位:1)。
配置完波特率,按Enter鍵,再輸入F,配置硬件流控,選擇NO
再繼續(xù)配置軟件流控,也選擇NO。都配置完后,按下Enter鍵返回上一界面,選擇save setup as dfl(即將其保存位默認配置),再選擇Exit,關閉minicom。
再次輸入命令 sudo minicom,是剛才的配置生效,可以看到串口輸出信息
注意:非正常關閉minicom,會在/var/lock下創(chuàng)建幾個文件LCK*,這幾個文件阻止了minicom的運行,將它們刪除后即可恢復
2. CuteCom
這個就友好點,有界面了。和Windows的差不多,可以選擇串口,設置波特率、數(shù)據(jù)位、停止位等。中間是接收窗口,下面是發(fā)送窗口。安裝:
# 安裝
sudo apt install cutecom
# 啟動
sudo cutecom
來張圖:
3. COMTool
這個是在github上找到的,由Neucrack Neutree開發(fā),用python3開發(fā),這里要注意,你電腦沒有Python3是不能運行的。值得注意的是,它支持跨平臺,linux、windows、mac都可以用。github鏈接github有各平臺的安裝及使用教程。
三、串口權(quán)限問題
Linux串口是默認普通用戶沒有讀寫權(quán)限的,每次開機后對串口讀寫都要附加權(quán)限
sudo chmod 666 /dev/ttyUSB0
但對于需要開機自動運行的程序就很麻煩了,所以可以設置永久加權(quán)
1.打開下面的文件遠程的話要把gedit換成vi或nano等。
這個文件本來是不存在的,只不過編輯器打開不存在的文件會自動創(chuàng)建。
70-usb-serial.rules文件名可以自定義,但必須以.rules結(jié)尾。
sudo gedit /etc/udev/rules.d/70-usb-serial.rules
2.在文件中添加如下內(nèi)容
ttyUSB*表示所有這一格式的串口名,如果你的是ttyS*或其它,按需改。
0666表示加權(quán)模式,和chmod后面的參數(shù)一致,寫成666也可以。
vibot_base是我自定義的串口名,就是為ttyUSB*創(chuàng)建一個超鏈接 ,如下圖。如果你不需要,可以去掉最后一項。
KERNEL=="ttyUSB*", MODE="0666", SYMLINK+="vibot_base"
3.重啟電腦重啟電腦使修改生效。
四、打開串口
#usr/bin/python3
# -*- coding: utf-8 -*-
import serial
//打開串口0, 9600,8N1,連接超時0.5秒
ser=serial.Serial("/dev/ttyUSB0",57600,timeout=0.5) #使用USB連接串行口
ser=serial.Serial("/dev/ttyAMA0",57600,timeout=0.5) #使用樹莓派的GPIO口連接串行口
ser=serial.Serial(1,9600,timeout=0.5)#winsows系統(tǒng)使用com1口連接串行口
ser=serial.Serial("com1",9600,timeout=0.5)#winsows系統(tǒng)使用com1口連接串行口
ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)#Linux系統(tǒng)使用com1口連接串行口