2016-08-08 2 views
0

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 
} 
です

2バイト目の印刷中に最初のコードが停止するのはなぜですか?私はここで何を誤解していますか?どちらのコードでも同じ出力が得られるはずはありませんか?

+1

[次のスレッド](http://forum.arduino.cc/index.php?topic=68229.0)は、 'HardwareSerial'の新しいインスタンスを作成する意味がないと説明しています(_"いずれにしてもHardwareSerialクラス "_"の新しいインスタンスを作成しようとしてはいけません。おそらく、既存の 'Serial'インスタンスへのポインタを作成しようとしていますか? – dfri

答えて

2

dfriは、別のHardwareSerialインスタンスを作成していて、悲惨な結果が出ていると述べています。

参照を使用してください。ドット表記ではなく、矢印表記を使用するので使用されている以外は、ポインタのようなものです:

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

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

注アンパサンド。

関連する問題