# Linux系統中串口調試工具怎么用
## 一、串口通信基礎概念
### 1.1 什么是串口通信
串口通信(Serial Communication)是指通過串行接口按位(bit)順序傳輸數據的通信方式。與并行通信相比,串口通信只需要少數幾條線(通常2-3根)就能實現數據交換,具有布線簡單、成本低、適合遠距離傳輸等特點。
在Linux系統中,串口設備通常以`/dev/ttyS*`(物理串口)或`/dev/ttyUSB*`(USB轉串口)的形式存在,例如:
- `/dev/ttyS0` - 第一個物理串口
- `/dev/ttyUSB0` - 第一個USB轉串口設備
### 1.2 常見串口參數
配置串口時需要設置以下關鍵參數:
- **波特率(Baud Rate)**:常見值有9600、19200、38400、57600、115200等
- **數據位(Data Bits)**:通常為5、6、7或8位
- **停止位(Stop Bits)**:1、1.5或2位
- **校驗位(Parity)**:none(無)、odd(奇校驗)、even(偶校驗)
- **流控(Flow Control)**:none(無)、hardware(硬件流控)、software(軟件流控)
## 二、Linux常用串口工具
### 2.1 minicom - 經典終端工具
#### 安裝方法
```bash
# Debian/Ubuntu
sudo apt install minicom
# RHEL/CentOS
sudo yum install minicom
啟動配置界面:
sudo minicom -s
主要配置項:
/dev/ttyUSB0)啟動minicom:
sudo minicom
Ctrl+A Z:查看幫助菜單Ctrl+A O:進入配置菜單Ctrl+A X:退出minicomCtrl+A C:清除屏幕sudo screen /dev/ttyUSB0 115200
按下Ctrl+A后,再按k,然后輸入y確認
sudo apt install picocom
picocom -b 115200 /dev/ttyUSB0
Ctrl+A Ctrl+X適合桌面環境用戶:
sudo apt install cutecom
sudo cutecom
# 列出所有串口設備
dmesg | grep tty
# 查看USB轉串口設備
ls /dev/ttyUSB*
# 查看串口詳細信息
setserial -g /dev/ttyS*
避免每次使用sudo:
sudo usermod -aG dialout $USER
# 注銷后重新登錄生效
sudo screen /dev/ttyUSB0 115200 | tee serial.log
sudo picocom -b 115200 --imap lfcrlf /dev/ttyUSB0 | hexdump -C
使用expect實現自動化交互:
#!/usr/bin/expect
set timeout 20
spawn sudo minicom -D /dev/ttyUSB0 -b 115200
expect "Press CTRL-A Z for help"
send "AT\r"
expect "OK"
send "AT+CSQ\r"
expect "OK"
send "AT+CGSN\r"
expect "OK"
send "AT+CGMI\r"
expect "OK"
send "\x01" # Ctrl+A
send "x" # 退出
expect "exit from Minicom"
可能原因及解決方案: 1. 權限不足:
sudo chmod 666 /dev/ttyUSB0
設備被占用:
lsof /dev/ttyUSB0
驅動未安裝:
lsmod | grep usbserial
檢查要點: 1. 確認雙方波特率一致 2. 檢查數據位、停止位、校驗位設置 3. 嘗試降低波特率測試
解決方案: 1. 啟用硬件流控 2. 增加發送間隔 3. 檢查電纜質量和長度
void loop() { if(Serial.available()) { Serial.write(Serial.read()); } }
2. Linux端測試:
```bash
echo "Hello Arduino" > /dev/ttyACM0
cat /dev/ttyACM0
常見場景: 1. 通過串口查看啟動日志 2. 進入系統控制臺 3. 傳輸小文件:
# 接收端
cat /dev/ttyS0 > received_file
# 發送端
cat file_to_send > /dev/ttyS0
使用pyserial庫:
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
ser.write(b'AT\r\n')
response = ser.readline()
print(response.decode())
ser.close()
使用socat創建網絡串口:
socat TCP-LISTEN:8888,fork FILE:/dev/ttyUSB0,raw,echo=0,b115200
推薦工具: - SerialPlot:實時繪圖工具 - Putty:Windows下常用,支持Linux - GtkTerm:簡單圖形界面終端
Linux系統提供了豐富的串口調試工具鏈,從基礎的minicom、screen到高級的編程接口,可以滿足各種調試需求。掌握這些工具的使用方法,能夠顯著提高嵌入式開發、設備調試的工作效率。建議初學者從minicom開始,逐步嘗試更高級的用法,最終形成適合自己的調試工作流。
提示:本文介紹的所有命令都需要根據實際硬件環境調整設備路徑和參數,操作前請確認設備節點名稱和通信參數。 “`
這篇文章共計約2550字,涵蓋了Linux串口調試的各個方面,包括基礎概念、工具使用、高級技巧和實際案例,采用Markdown格式編寫,便于閱讀和編輯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。