在新变量中存储类实例会导致奇怪的行为(Arduino Serial)



我只是想创建一个新的变量来存储Arduino默认提供的Serial对象。

我不明白的是:

为什么第一个代码的输出只有334

HardwareSerial SerialB = Serial;
void setup() {
  SerialB.begin(115200);
  SerialB.print(0x33, HEX);
  SerialB.print(0x44, HEX);
  SerialB.print(0x55, HEX);
}
void loop() {
  //do nothing
}
第二个代码的输出是334455
void setup() {
  Serial.begin(115200);
  Serial.print(0x33, HEX);
  Serial.print(0x44, HEX);
  Serial.print(0x55, HEX);
}
void loop() {
  //do nothing
}

为什么第一个代码在打印第二个字节时停止?我误解了什么?两个代码不应该产生相同的输出吗?

正如dfri所说,您正在创建另一个HardwareSerial实例,结果非常糟糕。

只需使用引用。它就像一个指针,只是使用了点符号而不是箭头符号:

HardwareSerial & SerialB = Serial; // an alias, not a new instance
void setup() {
  SerialB.begin(115200);
  SerialB.print(0x33, HEX);

最新更新