首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Arduino 序列通訊字串比對失敗:去除換行符

     編輯:程式設計綜合問答

問題代碼

Arduino 發送:Serial.print("DATA:CREADY \r \n");
VB 接收:buf = Trim(MSComm1.Input) → "DATA:CREADY \r \n",與預期 "DATA:CREADY" 不等。

根因

Serial.print 發送的字串**包含字面 \r \n**(兩字元:回車+換行),VB Trim 僅移除**首尾空白字元**(空格、Tab),**不移除 \r \n**。

修正

  1. Arduino 端:Serial.println("DATA:CREADY");(自動加換行)或 Serial.print("DATA:CREADY");(無換行),**不要手動加 \r \n**。
  2. VB 端:接收後 buf = Replace(Replace(buf, vbCr, ""), vbLf, "") 移除換行符,再 Trim。

最佳實踐

  • 協議約定**結束符**(如 \n),接收端按結束符分包解析,避免粘包/分包導致比對失敗。
  • 使用 Serial.readStringUntil('\n') (Arduino) / InputMode = comInputModeText (VB) 簡化處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved