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

时间:2016-08-08 16:43:06

标签: c++ object arduino instance-variables

我只是试图创建一个新变量来存储Serial对象,默认情况下Arduino提供。

现在这是我不明白的事情:

为什么第一个代码的输出只有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
}

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

1 个答案:

答案 0 :(得分:2)

正如dfri所说,你正在创建另一个HardwareSerial实例,带来了灾难性的结果。

只需使用参考即可。它就像一个指针,除了使用点符号而不必使用箭头符号:

HardwareSerial & SerialB = Serial; // an alias, not a new instance

void setup() {
  SerialB.begin(115200);
  SerialB.print(0x33, HEX);

请注意&符号。