簡體   English   中英

Arduino Serial.read(),讀取與ASCII字符對應的錯誤十進制數

[英]Arduino Serial.read(), reading wrong decimal number that corresponds to ASCII character

我正在編寫arduino草圖,當通過串行端口提供憑證字符時,它將執行憑證任務!

我的arduino素描的重要部分是:

while(Serial.available()){
Status = Serial.read();
Serial.println(Status);

if (Status == A){
    digitalWrite(led, HIGH);
    Serial.println("Pin 13 -> ON");

  }else if(Status == B){
      digitalWrite(led, LOW);
      Serial.println("Pin 13 -> OFF");
    }
}

順便說一句:變量狀態是整數類型!

問題是,有時它可以工作,有時不起作用,所以當我上傳草圖時,它可以正常工作,我鍵入字母A並將其轉換為數字65,鍵入字母B並將其轉換為數字66。一段時間后,它突然開始輸出數字193和194。如果返回193和194也可以,但不會! 希望somone會知道解決方案,如果您需要更多信息...

if (Status == A)正在比較兩個變量StatusA

您應該將其替換為if (Status == 'A') if (Status == 'B')

好吧,193/194與65/66僅相差1位(MSB)。 您可以像這樣屏蔽最左邊的位:

Status = Status & 01111111; // MSB will be zeroed

或雙班:

Status = Status << 1;
Status = Status >> 1; // now you have dropped the leftmost bit

這里查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM