我只是想创建一个新变量来存储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);


注意&符。

关于c++ - 将类实例存储在新变量中会导致奇怪的行为(Arduino串行),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38834502/

10-10 08:15