伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

直接使用echo發送數據、cat接收數據前,串口默認配置存在三類影響通信的問題:

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

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

3.緩沖延遲:默認icanon規范模式下,數據需等待回車指令才會發送,實時性較差,測試過程中無法即時查看傳輸結果。

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

wKgZO2kancOANHg8AAFaJLtHqI8983.png

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

第一步:確認串口設備,避免操作錯誤

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

#列出系統中所有ttyS類串口設備,確認目標串口存在

ls -l /dev/ttyS*

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

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

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

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

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

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

適用于多數串口通信場景,通過關閉回顯和換行轉換,避免基礎通信問題:

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

stty -F /dev/ttyS0 -echo -onlcr

指令解析

?sttyLinux系統自帶的串口參數配置工具;

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

?-echo:關閉輸入回顯功能——發送數據時,終端不再重復顯示發送內容,避免干擾接收端數據讀取;

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

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

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

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

stty -F /dev/ttyS0 -echo -icanon

關鍵補充

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

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

驗證配置有效性

配置完成后,通過stty指令查看/dev/ttyS0當前參數,確認目標配置已生效:

#查看/dev/ttyS0的當前配置,重點確認-echo-onlcr-icanon是否存在

stty -F /dev/ttyS0

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

第三步:雙終端實戰測試,驗證通信穩定性

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

終端1:接收端(監聽串口數據)

/dev/ttyS0設為接收端,通過cat指令持續讀取串口數據:

#終端1執行:持續接收/dev/ttyS0串口的數據

cat /dev/ttyS0

提示:cat指令會保持阻塞狀態以等待數據,需終止時按Ctrl+C即可。

終端2:發送端(發送測試數據)

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

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

echo -n "test_data" > /dev/ttyS0

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

進階:回環測試(無外部設備時自測)

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

1.用導線短接/dev/ttyS0對應的TX引腳(發送引腳)與RX引腳(接收引腳)(需參考硬件手冊確認引腳定義,如部分設備中/dev/ttyS0TXPIN10RXPIN9);

2.終端1執行:cat /dev/ttyS0(持續接收數據);

3.終端2執行:echo -n "loop_test" > /dev/ttyS0(發送測試數據);

4.若終端1成功接收“loop_test”,說明/dev/ttyS0串口硬件功能正常。

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

1.問題1:執行指令提示“Permission denied”

?原因:當前用戶無/dev/ttyS0串口的讀寫權限;

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

sudo chmod 666 /dev/ttyS0

1.問題2:配置后仍出現亂碼

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

?解決方案:統一雙方參數,以9600波特率為例,配置指令:

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

1.問題3:指令無報錯,但接收端無數據

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

?原因2SELinux攔截(CentOSRHEL等系統默認啟用SELinux,可能限制串口操作);

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

sudo setenforce 0

1.問題4:發送數據后,接收端延遲較長才顯示

?原因:未關閉icanon規范模式,數據滯留在緩沖區,需等待回車觸發發送;

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

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

四、方案優勢總結

1.簡潔高效:無需安裝第三方工具(如minicom),僅依賴系統自帶的sttyechocat指令,新手可在5分鐘內掌握基礎操作;

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

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

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



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11779

    瀏覽量

    219218
  • 干擾
    +關注

    關注

    0

    文章

    216

    瀏覽量

    28245
  • 串口
    +關注

    關注

    15

    文章

    1623

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    M451串口問題需要怎么關閉?

    M451串口問題需要怎么關閉?
    發表于 01-16 06:47

    怎樣處理串口調函數?

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

    串口接收數據亂碼的問題如何解決

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

    stm32串口的DMA模式串口該如何去實現呢

    stm32的串口都有什么樣的工作模式?stm32串口的DMA模式串口該如何去實現呢?
    發表于 12-08 06:38

    如何解決STM32串口通信數據問題?

    如何解決STM32串口通信數據問題?
    發表于 12-13 07:30

    怎么使用USB模擬串口數據?

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

    RTThread串口數據一切正常,msh亂碼怎么處理?

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

    M451串口問題需要怎么關閉?

    M451串口問題需要怎么關閉?
    發表于 08-25 06:22

    調試串口的時候,終端錯誤如何處理?

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

    STM32串口通信數據亂碼的相關問題

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

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

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

    嵌入式開發putty串口打印亂碼

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

    單片機串口通信亂碼問題

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

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

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

    STM32串口通信亂碼解決方法

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