在新变量中存储 class 实例会导致奇怪的行为(Arduino Serial)
Storing class instance in new variable causes weird behavior (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);
注意符号。
我只是想创建一个新变量来存储 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);
注意符号。