Serial.write(5) 无法发送小数?

Serial.write(5) not able to send decimal?

我正在尝试,作为对 Serial.write int 值的测试:5,到串行监视器,如果收到,我想打印文本“SUCCESS!”到串行监视器。

但是在写 Serial.write((int)5); 时,我在串行监视器中得到的是:

我试过使用 Serial.println(5);效果很好,但我无法阅读它。

我的代码:

enum read_states {
  Modtag_Adresse, 
  Modtag_Bit_Position_I_Adresse, 
  Modtag_Bit_Position_Vaerdi
};

enum read_states state;

void setup() {
  state = Modtag_Adresse;
  Serial.begin(9600);
}

void loop() {
  if(state == Modtag_Adresse) {
    Serial.write((int)5);
    delay(1000);

    if(Serial.available() > 0) {
      int serialReceived = Serial.read();

      if(serialReceived >= 0) {
          // Receive value 5
        Serial.print("SUCCESS!!");
      }
    }
  }

  else if(state == Modtag_Bit_Position_I_Adresse) {
    //
  }

  else if(state == Modtag_Bit_Position_Vaerdi) {
    //
  }

  else {
    // Failure.
  }
}

Serial.write(5) 将字节 5 发送到计算机。它显示为正方形,因为它不是字母、数字或符号的 ASCII 代码。

Serial.print(5) 发送 5(即 53)的 ASCII 码。

你写的东西看不懂的原因是Serial.write向电脑发送数据,Serial.readreturns从电脑接收数据。如果它从 Arduino 程序读取数据,那将毫无意义,因为您不需要为此使用串行。