なぜArduinoが初期化する前に、シリアルモニタにテキストがあるのですか?

私はこれまでに数回これに遭遇しました。誰かが説明をすることができれば嬉しいです。シリアル通信を使って作成したスケッチのほとんどは、void setup()関数が実行される前に表示されるようなテキストが表示されます。たとえば、私はこれが起こる場所の下で最も簡単なスケッチを持っています。

void setup(){
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Welcome");
}

void loop(){
// put your main code here, to run repeatedly:
}

これを私のArduino Megasにアップロードすると、私はしばしばシリアルモニタで出力を得るでしょう:

WelcWelcome

出力を見るためにシリアルモニタを開くと、 "Welc"はすでに書き込まれていて、残りの "Welcome"は数秒後に表示されます。シリアルモニタを閉じて再オープンしたり、シリアルモニタ内のボーレート設定を再選択すると、シリアルモニタがクリアされ、Arduinoが再起動し、 "Welc"が表示されずに画面に "Welcome"のみが表示されます。

しかし、スケッチをアップロードしてからArduino-USBケーブルをコンピュータから切断して再接続し、シリアルモニタを開くと、前と同じように画面に残ったバイトが印刷されません。

void setup()関数が呼び出される前に表示される正確なバイトの残量は、アップロードからアップロードまでによって異なります。誰も私に説明を与えて、残りのバイトを避ける方法はありますか?ありがとうございました。

2

2 答え

これはArduinoがスケッチの実行を開始し、USBチップのバッファにデータを配置したためです。シリアルモニタを開いてシリアルポートを開き、Arduinoをリセットします。だからスケッチが再び動く。

USBインターフェイスチップではなく、Arduinoのみをリセットするので、最初の実行に加えて2番目(開封後)の新しいテキストを取得できます。

余分なバイトを "回避"することはできません。 Arduinoがリセットされます。さまざまな場所にバッファーがあります。あなたはそれらのバッファを制御できません。

副注:シリアルモニタは完全に嫌です。適切な端末エミュレータを適切に使用したい場合は、ANSI制御コードを使用して画面をクリアしたり、カーソルを移動したり、カラーを適用したりすることができます。

5
追加された

シリアル・モニタを起動するとすぐに、シリアル・バッファ上のwhatsが選択され、接続されたarduinoがリセットされます。コードをアップロードしようとするとリセットされますが、このインスタンスではシリアル・モニタはクリアされます。

0
追加された