91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux串口操作指南:3步搞定設(shè)置,告別亂碼與回顯干擾

jf_44130326 ? 來源:Linux1024 ? 2026-02-01 16:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux系統(tǒng)下調(diào)試串口(如RS232/485)時,新手常面臨兩類典型問題:發(fā)送數(shù)據(jù)出現(xiàn)亂碼、終端回顯干擾接收結(jié)果。實際上,僅需通過系統(tǒng)自帶的stty指令完成基礎(chǔ)配置,配合雙終端測試,即可快速實現(xiàn)穩(wěn)定的串口通信。本文基于通用操作場景,總結(jié)一套即學(xué)即用的串口設(shè)置與測試方案。

一、核心痛點解析:為何需配置串口參數(shù)?

直接使用echo發(fā)送數(shù)據(jù)、cat接收數(shù)據(jù)前,串口默認(rèn)配置存在三類影響通信的問題:

1.亂碼問題:默認(rèn)啟用的onlcr模式會將換行符(n自動轉(zhuǎn)換為回車+換行(rn,若對接設(shè)備不兼容該格式,接收端會出現(xiàn)亂碼;

2.回顯干擾:默認(rèn)echo模式會重復(fù)顯示輸入字符(如發(fā)送“123”時,終端會額外回顯“123”),導(dǎo)致接收端獲取的數(shù)據(jù)混入冗余內(nèi)容;

3.緩沖延遲:默認(rèn)icanon規(guī)范模式下,數(shù)據(jù)需等待回車指令才會發(fā)送,實時性較差,測試過程中無法即時查看傳輸結(jié)果。

針對上述問題,核心配置指令(如stty -F /dev/ttyS0 -echo -onlcrstty -F /dev/ttyS0 -echo -icanon)可實現(xiàn)精準(zhǔn)解決。

wKgZO2kancOANHg8AAFaJLtHqI8983.png

二、Linux串口操作3步方案(含指令解析)

第一步:確認(rèn)串口設(shè)備,避免操作錯誤

首先通過ls命令查看系統(tǒng)中已識別的串口設(shè)備(常見路徑為/dev/ttyS*/dev/ttyUSB*,前者為硬件串口,后者為USB轉(zhuǎn)串口設(shè)備),示例如下:

#列出系統(tǒng)中所有ttyS類串口設(shè)備,確認(rèn)目標(biāo)串口存在

ls -l /dev/ttyS*

示例輸出(確認(rèn)/dev/ttyS0串口存在):

crw-rw---- 1 root dialout 4, 64 2025-09-01 10:00 /dev/ttyS0

注意:若執(zhí)行命令時提示“Permission denied”,后續(xù)所有操作需添加sudo權(quán)限,或切換至root用戶(通過su -指令)。

第二步:用stty配置串口,解決亂碼與回顯

基于/dev/ttyS0串口,針對不同通信需求,分兩類場景進(jìn)行配置,覆蓋多數(shù)測試場景:

場景1:通用測試(解決亂碼+關(guān)閉回顯)

適用于多數(shù)串口通信場景,通過關(guān)閉回顯和換行轉(zhuǎn)換,避免基礎(chǔ)通信問題:

#核心指令:配置/dev/ttyS0,關(guān)閉回顯(-echo)、關(guān)閉換行符轉(zhuǎn)換(-onlcr

stty -F /dev/ttyS0 -echo -onlcr

指令解析

?sttyLinux系統(tǒng)自帶的串口參數(shù)配置工具;

?-F /dev/ttyS0:指定待配置的串口設(shè)備路徑(-F“File”縮寫,用于明確操作對象);

?-echo:關(guān)閉輸入回顯功能——發(fā)送數(shù)據(jù)時,終端不再重復(fù)顯示發(fā)送內(nèi)容,避免干擾接收端數(shù)據(jù)讀??;

?-onlcr:關(guān)閉輸出換行轉(zhuǎn)回車功能(onlcr全稱“Output NewLine to Carriage Return”——禁用后,換行符(n)將直接發(fā)送,不額外轉(zhuǎn)換為回車+換行,解決格式不兼容導(dǎo)致的亂碼。

場景2:實時傳輸測試(低延遲+關(guān)閉回顯)

針對傳感器數(shù)據(jù)采集、實時指令下發(fā)等對傳輸延遲要求較高的場景,需額外關(guān)閉icanon規(guī)范模式,啟用原始模式

#進(jìn)階指令:配置/dev/ttyS0,關(guān)閉回顯(-echo)、關(guān)閉規(guī)范模式(-icanon

stty -F /dev/ttyS0 -echo -icanon

關(guān)鍵補充

?-icanon:關(guān)閉規(guī)范模式,進(jìn)入原始模式”——數(shù)據(jù)無需等待回車指令,發(fā)送后立即傳輸,實時性顯著提升,測試中可即時觀察接收結(jié)果;

?若需固定波特率(如9600115200),可在指令末尾追加波特率參數(shù),示例:stty -F /dev/ttyS0 -echo -icanon 9600(串口波特率需與對接設(shè)備保持一致,否則會出現(xiàn)亂碼)。

驗證配置有效性

配置完成后,通過stty指令查看/dev/ttyS0當(dāng)前參數(shù),確認(rèn)目標(biāo)配置已生效:

#查看/dev/ttyS0的當(dāng)前配置,重點確認(rèn)-echo、-onlcr-icanon是否存在

stty -F /dev/ttyS0

正確輸出特征:參數(shù)列表中顯示-echo(回顯關(guān)閉)、-onlcr(換行轉(zhuǎn)換關(guān)閉)、-icanon(規(guī)范模式關(guān)閉,若配置該參數(shù)),無echoonlcr、icanon原始參數(shù)。

第三步:雙終端實戰(zhàn)測試,驗證通信穩(wěn)定性

配置完成后,打開兩個終端,分別執(zhí)行接收發(fā)送操作,驗證/dev/ttyS0串口通信是否正常:

終端1:接收端(監(jiān)聽串口數(shù)據(jù))

/dev/ttyS0設(shè)為接收端,通過cat指令持續(xù)讀取串口數(shù)據(jù):

#終端1執(zhí)行:持續(xù)接收/dev/ttyS0串口的數(shù)據(jù)

cat /dev/ttyS0

提示:cat指令會保持阻塞狀態(tài)以等待數(shù)據(jù),需終止時按Ctrl+C即可。

終端2:發(fā)送端(發(fā)送測試數(shù)據(jù))

在另一個終端中,向/dev/ttyS0串口發(fā)送測試數(shù)據(jù)(如test_data”):

#終端2執(zhí)行:向/dev/ttyS0串口發(fā)送“test_data”-n選項避免自動追加換行符)

echo -n "test_data" > /dev/ttyS0

預(yù)期結(jié)果:終端1會即時顯示“test_data”,無亂碼、無冗余回顯內(nèi)容,表明串口配置正確且通信正常。

進(jìn)階:回環(huán)測試(無外部設(shè)備時自測)

若暫無對接設(shè)備,可通過回環(huán)測試驗證串口自身功能是否正常:

1.用導(dǎo)線短接/dev/ttyS0對應(yīng)的TX引腳(發(fā)送引腳)與RX引腳(接收引腳)(需參考硬件手冊確認(rèn)引腳定義,如部分設(shè)備中/dev/ttyS0TXPIN10、RXPIN9);

2.終端1執(zhí)行:cat /dev/ttyS0(持續(xù)接收數(shù)據(jù));

3.終端2執(zhí)行:echo -n "loop_test" > /dev/ttyS0(發(fā)送測試數(shù)據(jù));

4.若終端1成功接收“l(fā)oop_test”,說明/dev/ttyS0串口硬件功能正常。

三、常見問題解決方案(新手必看)

1.問題1:執(zhí)行指令提示“Permission denied”

?原因:當(dāng)前用戶無/dev/ttyS0串口的讀寫權(quán)限;

?解決方案:通過chmod指令臨時賦予全用戶讀寫權(quán)限,示例:

sudo chmod 666 /dev/ttyS0

1.問題2:配置后仍出現(xiàn)亂碼

?原因:串口波特率、數(shù)據(jù)位、校驗位與對接設(shè)備不匹配(如本地配置為9600波特率,對接設(shè)備為115200波特率);

?解決方案:統(tǒng)一雙方參數(shù),以9600波特率為例,配置指令:

stty -F /dev/ttyS0 -echo -onlcr 9600

1.問題3:指令無報錯,但接收端無數(shù)據(jù)

?原因1:物理連接異常(如TX/RX引腳接反、未共地);

?原因2SELinux攔截(CentOS、RHEL等系統(tǒng)默認(rèn)啟用SELinux,可能限制串口操作);

?解決方案:檢查物理接線是否正確;臨時關(guān)閉SELinux(僅用于測試),指令:

sudo setenforce 0

1.問題4:發(fā)送數(shù)據(jù)后,接收端延遲較長才顯示

?原因:未關(guān)閉icanon規(guī)范模式,數(shù)據(jù)滯留在緩沖區(qū),需等待回車觸發(fā)發(fā)送;

?解決方案:添加-icanon參數(shù)配置串口,指令:

stty -F /dev/ttyS0 -echo -onlcr -icanon

四、方案優(yōu)勢總結(jié)

1.簡潔高效:無需安裝第三方工具(如minicom),僅依賴系統(tǒng)自帶的sttyecho、cat指令,新手可在5分鐘內(nèi)掌握基礎(chǔ)操作;

2.精準(zhǔn)避坑:通過-echo解決回顯干擾、-onlcr解決亂碼、-icanon解決實時性問題,三個核心參數(shù)覆蓋90%以上的串口測試場景;

3.通用性強:適用于硬件串口(/dev/ttyS*)與USB轉(zhuǎn)串口(/dev/ttyUSB*),僅需替換串口路徑即可復(fù)用操作流程。

若在串口調(diào)試過程中遇到其他問題,可通過查看系統(tǒng)日志(dmesg | grep ttyS0)進(jìn)一步定位故障,或參考硬件手冊確認(rèn)串口引腳與參數(shù)配置。



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11756

    瀏覽量

    218997
  • 干擾
    +關(guān)注

    關(guān)注

    0

    文章

    216

    瀏覽量

    28208
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1618

    瀏覽量

    82792
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    M451串口問題需要怎么關(guān)閉?

    M451串口問題需要怎么關(guān)閉?
    發(fā)表于 01-16 06:47

    怎樣處理串口調(diào)函數(shù)?

    正常的。如果PC發(fā)送數(shù)據(jù)給2540的速度太快,也會有少量的亂碼。PC(或其他MCU)通過串口發(fā)送數(shù)據(jù)給2540,2540通過DMA接收串口
    發(fā)表于 10-11 06:48

    串口接收數(shù)據(jù)亂碼的問題如何解決

      如標(biāo)題所示,各種儀器儀表進(jìn)行串口通訊,都可能遇到運行后發(fā)現(xiàn)串口數(shù)據(jù)出錯,接收到的都是亂碼,不知道是哪個環(huán)節(jié)出了問題,怎么辦?  亂碼的原因通常有兩個:  1、波特率 數(shù)據(jù)位 校驗位
    發(fā)表于 06-30 14:45

    如何解決STM32串口通信數(shù)據(jù)問題?

    如何解決STM32串口通信數(shù)據(jù)問題?
    發(fā)表于 12-13 07:30

    怎么使用USB模擬串口數(shù)據(jù)?

    如何更新外部flash中的數(shù)據(jù)?怎么使用USB模擬串口數(shù)據(jù)?
    發(fā)表于 02-22 07:29

    RTThread串口數(shù)據(jù)一切正常,msh亂碼怎么處理?

    串口數(shù)據(jù)一切正常,只有msh數(shù)據(jù)是亂碼,打開了RT_USING_POSIX,
    發(fā)表于 05-11 09:32

    M451串口問題需要怎么關(guān)閉?

    M451串口問題需要怎么關(guān)閉?
    發(fā)表于 08-25 06:22

    調(diào)試串口的時候,終端錯誤如何處理?

    我調(diào)試串口的時候,發(fā)現(xiàn)出現(xiàn)錯誤 可以肯定,全部輸出都是英文,不存在中文輸出的情況。 而且輸入的字母也是顯示亂碼,但似乎可以被板子正確識別,不知這種情況應(yīng)該如何處理?
    發(fā)表于 09-28 06:16

    STM32串口通信數(shù)據(jù)亂碼的相關(guān)問題

    STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機時鐘樹的問題,串口通信遇到串口調(diào)試助手能夠接收到數(shù)據(jù)但出現(xiàn)亂碼現(xiàn)象,開始
    發(fā)表于 06-22 08:01 ?1.3w次閱讀
    STM32<b class='flag-5'>串口</b>通信數(shù)據(jù)<b class='flag-5'>亂碼</b>的相關(guān)問題

    知道STM32串口通信亂碼要怎么處理嗎

    STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機時鐘樹的問題,串口通信遇到串口調(diào)試助手能夠接收到數(shù)據(jù)但出現(xiàn)亂碼現(xiàn)象。 開
    的頭像 發(fā)表于 06-16 15:35 ?1w次閱讀
    知道STM32<b class='flag-5'>串口</b>通信<b class='flag-5'>亂碼</b>要怎么處理嗎

    嵌入式開發(fā)putty串口打印亂碼

    目錄嵌入式開發(fā)putty串口打印亂碼編碼格式問題波特率設(shè)置錯誤嵌入式開發(fā)putty串口打印亂碼在使用putty連接
    發(fā)表于 11-02 18:21 ?12次下載
    嵌入式開發(fā)putty<b class='flag-5'>串口</b>打印<b class='flag-5'>亂碼</b>

    CC3200 調(diào)試串口UART出現(xiàn)亂碼

    主要針對的是串口助手在調(diào)試CC3200 UART時出現(xiàn)亂碼問題的解決方案。
    發(fā)表于 11-29 21:06 ?9次下載
    CC3200 調(diào)試<b class='flag-5'>串口</b>UART出現(xiàn)<b class='flag-5'>亂碼</b>

    單片機串口通信亂碼問題

    單片機串口通信亂碼問題問題:測試51單片機串口通信時,設(shè)置主程序為單片機將接收到的數(shù)據(jù)發(fā)送出去,但在串口助手接收到的單片機發(fā)來的數(shù)據(jù)總是
    發(fā)表于 12-23 19:05 ?10次下載
    單片機<b class='flag-5'>串口</b>通信<b class='flag-5'>亂碼</b>問題

    STC51和STM32使用串口輸出中文亂碼問題解決

    ,見以下圖片:解決思路:1、檢查軟件串口波特率設(shè)置串口調(diào)試助手的波特率設(shè)置是否一致;2、軟件串口波特率計算不是整數(shù),跟
    發(fā)表于 12-23 19:49 ?7次下載
    STC51和STM32使用<b class='flag-5'>串口</b>輸出中文<b class='flag-5'>亂碼</b>問題解決

    STM32串口通信亂碼解決方法

    STM32串口通信亂碼解決方法STM32使用USART做串口通信實驗的時候,串口調(diào)試助手能夠接收到數(shù)據(jù)但出現(xiàn)亂碼現(xiàn)象,顯示開發(fā)板發(fā)來的數(shù)據(jù)總
    發(fā)表于 12-24 18:43 ?21次下載
    STM32<b class='flag-5'>串口</b>通信<b class='flag-5'>亂碼</b>解決方法