Description
Describe the bug
The Serial Monitor and Serial Plotter have an input field the user can use to send data over the selected port.
🐛 In all except the first Arduino IDE window of the session with a given port selected:
- Data sent via the Serial Monitor's "Message" field is not received by the Arduino board.
- The Serial Plotter's "Type Message" field is disabled due to the plotter being in a "disconnected" state.
To Reproduce
Preparation
Upload a sketch to your Arduino board that echos serial input as well as autonomously sending serial output:
unsigned long previousMillis;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
while (Serial.available() > 0) {
Serial.write(Serial.read());
}
Serial.println();
} else if (millis() - previousMillis >= 1000) {
previousMillis = millis();
Serial.println(random(100));
}
}
The bug will occur regardless of which sketch is on the board. This sketch is only intended to make the behavior easier to observe.
Observe baseline working state
This procedure is not required to reproduce the bug. It is only intended to prove that the issue does not occur in the first window of the session.
- Open the "Serial Monitor" view (Tools > Serial Monitor).
- Select "9600 baud" from the "Serial Monitor" view's baud rate menu.
🙂 Notice that random numbers are periodically printed to the Serial Monitor view's output field, as expected. - Type
4242
into the the "Serial Monitor" view's "Message" field. - Press Ctrl+Enter to send the text over the serial port.
🙂 Notice that the sent text4242
is printed to the Serial Monitor view's output field, as expected.
- Open the "Serial Plotter" window (Tools > Serial Plotter).
🙂 Notice that random numbers are periodically plotted in the Serial Plotter, as expected. - Type
4242
into the the "Serial Plotter" window's "Type Message" field. - Click the Send button to send the text over the serial port.
🙂 Notice that the sent value4242
is plotted in the Serial Plotter, as expected.
- Close the "Serial Monitor" view (X icon).
This is not mandatory to reproduce the bug. It is done so that Serial Monitor will not be open in the first window of the next session, which might give the impression that is a required condition to reproduce the bug. - Select File > Quit from the Arduino IDE menus.
This is not mandatory to reproduce the bug. It is done so that it is clear that none of the operations performed during this procedure are required conditions to reproduce the bug.
Observe bug
- Start the Arduino IDE.
- If not already selected, select your board and port from the board/port selector dropdown.
- Select File > New from the Arduino IDE menus.
This loads the second window of the current IDE session. - Open the "Serial Monitor" view (Tools > Serial Monitor).
- Select "9600 baud" from the "Serial Monitor" view's baud rate menu.
🙂 Notice that random numbers are periodically printed to the Serial Monitor view's output field, as expected.
🐛 Notice that there is an unexpected banner in Serial Monitor:Not connected. Select a board and a port to connect automatically.
- Type
4242
into the the "Serial Monitor" view's "Message" field. - Press Ctrl+Enter to send the text over the serial port.
🐛 Notice that the sent text4242
is not printed to the Serial Monitor view's output field. - Open the "Serial Plotter" window (Tools > Serial Plotter).
🙂 Notice that random numbers are periodically plotted in the Serial Plotter, as expected.
🐛 Notice that the Serial Plotter window title has the "(disconnected) suffix.
🐛 Notice that a "Board disconnected" notification is shown in the Serial Plotter window.
🐛 Notice that Serial Plotter's "Type message" field and some other UI elements are disabled.
Expected behavior
Serial Monitor and Serial Plotter of subsequent IDE windows for a given port selection to allow sending data.
Desktop
- OS: Windows 10
- Version: 2.0.0-rc3-snapshot.35e5da5
Date: 2022-01-13T17:15:54.562Z
CLI Version: 0.20.2 [13783819]
Additional context
I bisected the related issue #726 to 767b09d (it does not occur at 8839793).