Skip to content
This repository was archived by the owner on Oct 1, 2024. It is now read-only.

Commit 08a2aa2

Browse files
Merge pull request #1577 from microsoft/dev/gcampbell/UpdateSerialMonitor2.0
Modify to use standalone Serial Monitor Extension
2 parents 2ec8a74 + 71fde05 commit 08a2aa2

14 files changed

+147
-842
lines changed

README.md

-5
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ You can find code samples and tutorials each time that you connect a supported d
5858
This extension provides several commands in the Command Palette (<kbd>F1</kbd> or <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> *or* <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) for working with `*.ino` files:
5959

6060
- **Arduino: Board Manager**: Manage packages for boards. You can add 3rd party Arduino board by configuring `Additional Board Manager URLs` in the board manager.
61-
- **Arduino: Change Baud Rate**: Change the baud rate of the selected serial port.
6261
- **Arduino: Change Board Type**: Change board type or platform.
6362
- **Arduino: Change Timestamp Format**: Change format of timestamp printed before each line of Serial Monitor output.
6463
- **Arduino: Close Serial Monitor**: Stop the serial monitor and release the serial port.
@@ -67,7 +66,6 @@ This extension provides several commands in the Command Palette (<kbd>F1</kbd> o
6766
- **Arduino: Library Manager**: Explore and manage libraries.
6867
- **Arduino: Open Serial Monitor**: Open the serial monitor in the integrated output window.
6968
- **Arduino: Select Serial Port**: Change the current serial port.
70-
- **Arduino: Send Text to Serial Port**: Send a line of text via the current serial port.
7169
- **Arduino: Upload**: Build sketch and upload to Arduino board.
7270
- **Arduino: CLI Upload**: Upload complied code without building sketch (CLI only).
7371
- **Arduino: Upload Using Programmer**: Upload using an external programmer.
@@ -93,8 +91,6 @@ This extension provides several commands in the Command Palette (<kbd>F1</kbd> o
9391
| `arduino.enableUSBDetection` | Enable/disable USB detection from the VSCode Arduino extension. The default value is `true`. When your device is plugged in to your computer, it will pop up a message "`Detected board ****, Would you like to switch to this board type`". After clicking the `Yes` button, it will automatically detect which serial port (COM) is connected a USB device. If your device does not support this feature, please provide us with the PID/VID of your device; the code format is defined in `misc/usbmapping.json`.To learn more about how to list the vid/pid, use the following tools: https://github.com/EmergingTechnologyAdvisors/node-serialport `npm install -g serialport` `serialport-list -f jsonline`|
9492
| `arduino.disableTestingOpen` | Enable/disable automatic sending of a test message to the serial port for checking the open status. The default value is `false` (a test message will be sent). |
9593
| `arduino.skipHeaderProvider` | Enable/disable the extension providing completion items for headers. This functionality is included in newer versions of the C++ extension. The default value is `false`.|
96-
| `arduino.defaultBaudRate` | Default baud rate for the serial port monitor. The default value is 115200. Supported values are 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400 and 250000 |
97-
| `arduino.defaultTimestampFormat` | Format of timestamp printed before each line of Serial Monitor output. You can find list of all available placeholders [here](https://github.com/samsonjs/strftime#supported-specifiers). |
9894
| `arduino.disableIntelliSenseAutoGen` | When `true` vscode-arduino will not auto-generate an IntelliSense configuration (i.e. `.vscode/c_cpp_properties.json`) by analyzing Arduino's compiler output. |
9995
| `arduino.analyzeOnOpen` | When true, automatically run analysis when the project is opened. Only works when `arduino.analyzeOnSettingChange` is true. |
10096
| `arduino.analyzeOnSettingChange` | When true, automatically run analysis when board, configuration, or sketch settings are changed. |
@@ -113,7 +109,6 @@ The following Visual Studio Code settings are available for the Arduino extensio
113109
"https://raw.githubusercontent.com/VSChina/azureiotdevkit_tools/master/package_azureboard_index.json",
114110
"http://arduino.esp8266.com/stable/package_esp8266com_index.json"
115111
],
116-
"arduino.defaultBaudRate": 115200
117112
}
118113
```
119114

package-lock.json

+14-326
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+6-20
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,8 @@
4242
"onCommand:arduino.selectProgrammer",
4343
"onCommand:arduino.selectSerialPort",
4444
"onCommand:arduino.selectSketch",
45-
"onCommand:arduino.changeBaudRate",
46-
"onCommand:arduino.changeTimestampFormat",
4745
"onCommand:arduino.openSerialMonitor",
48-
"onCommand:arduino.sendMessageToSerialPort",
46+
"onCommand:arduino.changeTimestampFormat",
4947
"onCommand:arduino.closeSerialMonitor",
5048
"onCommand:arduino.changeBoardType",
5149
"onCommand:arduino.showBoardConfig",
@@ -125,17 +123,13 @@
125123
"title": "Arduino: Select Serial Port"
126124
},
127125
{
128-
"command": "arduino.changeBaudRate",
129-
"title": "Arduino: Change Baud Rate"
126+
"command": "arduino.openSerialMonitor",
127+
"title": "Arduino: Open Serial Monitor"
130128
},
131129
{
132130
"command": "arduino.changeTimestampFormat",
133131
"title": "Arduino: Change Timestamp Format"
134132
},
135-
{
136-
"command": "arduino.openSerialMonitor",
137-
"title": "Arduino: Open Serial Monitor"
138-
},
139133
{
140134
"command": "arduino.closeSerialMonitor",
141135
"title": "Arduino: Close Serial Monitor"
@@ -527,20 +521,11 @@
527521
"type": "boolean",
528522
"default": false
529523
},
530-
"arduino.defaultBaudRate": {
531-
"type": "number",
532-
"default": 115200
533-
},
534524
"arduino.disableIntelliSenseAutoGen": {
535525
"type": "boolean",
536526
"default": false,
537527
"description": "When disabled vscode-arduino will not auto-generate an IntelliSense configuration (i.e. c_cpp_properties.json) by analyzing the compiler output."
538528
},
539-
"arduino.defaultTimestampFormat": {
540-
"type": "string",
541-
"default": "",
542-
"markdownDescription": "Format of timestamp printed before each line of Serial Monitor output. You can find list of all available placeholders [here](https://github.com/samsonjs/strftime#supported-specifiers)."
543-
},
544529
"arduino.analyzeOnOpen": {
545530
"type": "boolean",
546531
"default": true,
@@ -600,7 +585,8 @@
600585
"test": "gulp test"
601586
},
602587
"extensionDependencies": [
603-
"ms-vscode.cpptools"
588+
"ms-vscode.cpptools",
589+
"ms-vscode.vscode-serial-monitor"
604590
],
605591
"devDependencies": {
606592
"@babel/core": "^7.15.5",
@@ -646,6 +632,7 @@
646632
"webpack": "^4.44.1"
647633
},
648634
"dependencies": {
635+
"@microsoft/vscode-serial-monitor-api": "^0.1.5",
649636
"@vscode/extension-telemetry": "~0.6.2",
650637
"body-parser": "^1.16.1",
651638
"cocopa": "0.0.13",
@@ -657,7 +644,6 @@
657644
"iconv-lite": "^0.4.18",
658645
"impor": "^0.1.1",
659646
"properties": "^1.2.1",
660-
"serialport": "^10.2.2",
661647
"strftime": "^0.9.2",
662648
"usb-detection": "^4.13.0",
663649
"uuid": "^3.0.1",

src/arduino/arduino.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ export class ArduinoApp {
747747
if (buildMode === BuildMode.Upload || buildMode === BuildMode.UploadProgrammer) {
748748
UsbDetector.getInstance().resumeListening();
749749
if (restoreSerialMonitor) {
750-
await SerialMonitor.getInstance().openSerialMonitor();
750+
await SerialMonitor.getInstance().openSerialMonitor(true);
751751
}
752752
}
753753
return ret;

src/arduino/arduinoSettings.ts

-36
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ export interface IArduinoSettings {
2222
defaultLibPath: string;
2323
sketchbookPath: string;
2424
preferencePath: string;
25-
defaultBaudRate: number;
2625
preferences: Map<string, string>;
2726
useArduinoCli: boolean;
2827
usingBundledArduinoCli: boolean;
29-
defaultTimestampFormat: string;
3028
analyzeOnSettingChange: boolean;
3129
reloadPreferences(): void;
3230
}
@@ -40,14 +38,10 @@ export class ArduinoSettings implements IArduinoSettings {
4038

4139
private _sketchbookPath: string;
4240

43-
private _defaultBaudRate: number;
44-
4541
private _preferences: Map<string, string>;
4642

4743
private _useArduinoCli: boolean;
4844

49-
private _defaultTimestampFormat: string;
50-
5145
private _usingBundledArduinoCli: boolean = false;
5246

5347
private readonly bundledArduinoCliName: { [platform: string]: string } = {
@@ -68,8 +62,6 @@ export class ArduinoSettings implements IArduinoSettings {
6862
this._commandPath = VscodeSettings.getInstance().commandPath;
6963
this._useArduinoCli = VscodeSettings.getInstance().useArduinoCli;
7064
await this.tryResolveArduinoPath();
71-
await this.tryGetDefaultBaudRate();
72-
await this.tryGetDefaultTimestampFormat();
7365
if (platform === "win32") {
7466
await this.updateWindowsPath();
7567
if (this._commandPath === "") {
@@ -181,15 +173,6 @@ export class ArduinoSettings implements IArduinoSettings {
181173
public get usingBundledArduinoCli() {
182174
return this._usingBundledArduinoCli;
183175
}
184-
185-
public get defaultBaudRate() {
186-
return this._defaultBaudRate;
187-
}
188-
189-
public get defaultTimestampFormat() {
190-
return this._defaultTimestampFormat;
191-
}
192-
193176
public get analyzeOnSettingChange(): boolean {
194177
return VscodeSettings.getInstance().analyzeOnSettingChange;
195178
}
@@ -278,23 +261,4 @@ export class ArduinoSettings implements IArduinoSettings {
278261
this._arduinoPath = configValue;
279262
}
280263
}
281-
282-
private async tryGetDefaultBaudRate(): Promise<void> {
283-
const supportBaudRates = [300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000];
284-
const configValue = VscodeSettings.getInstance().defaultBaudRate;
285-
if (!configValue || supportBaudRates.indexOf(configValue) === -1) {
286-
this._defaultBaudRate = 0;
287-
} else {
288-
this._defaultBaudRate = configValue;
289-
}
290-
}
291-
292-
private async tryGetDefaultTimestampFormat(): Promise<void> {
293-
const configValue = VscodeSettings.getInstance().defaultTimestampFormat;
294-
if (!configValue) {
295-
this._defaultTimestampFormat = "";
296-
} else {
297-
this._defaultTimestampFormat = configValue;
298-
}
299-
}
300264
}

src/arduino/vscodeSettings.ts

-12
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@ const configKeys = {
1616
DISABLE_TESTING_OPEN: "arduino.disableTestingOpen",
1717
IGNORE_BOARDS: "arduino.ignoreBoards",
1818
SKIP_HEADER_PROVIDER: "arduino.skipHeaderProvider",
19-
DEFAULT_BAUD_RATE: "arduino.defaultBaudRate",
2019
USE_ARDUINO_CLI: "arduino.useArduinoCli",
2120
DISABLE_INTELLISENSE_AUTO_GEN: "arduino.disableIntelliSenseAutoGen",
22-
DEFAULT_TIMESTAMP_FORMAT: "arduino.defaultTimestampFormat",
2321
ANALYZE_ON_OPEN: "arduino.analyzeOnOpen",
2422
ANALYZE_ON_SETTING_CHANGE: "arduino.analyzeOnSettingChange",
2523
};
@@ -35,10 +33,8 @@ export interface IVscodeSettings {
3533
disableTestingOpen: boolean;
3634
ignoreBoards: string[];
3735
skipHeaderProvider: boolean;
38-
defaultBaudRate: number;
3936
useArduinoCli: boolean;
4037
disableIntelliSenseAutoGen: boolean;
41-
defaultTimestampFormat: string;
4238
analyzeOnOpen: boolean;
4339
analyzeOnSettingChange: boolean;
4440
updateAdditionalUrls(urls: string[]): void;
@@ -119,10 +115,6 @@ export class VscodeSettings implements IVscodeSettings {
119115
this.setConfigValue(configKeys.IGNORE_BOARDS, value, true);
120116
}
121117

122-
public get defaultBaudRate(): number {
123-
return this.getConfigValue<number>(configKeys.DEFAULT_BAUD_RATE);
124-
}
125-
126118
public get useArduinoCli(): boolean {
127119
return this.getConfigValue<boolean>(configKeys.USE_ARDUINO_CLI);
128120
}
@@ -139,10 +131,6 @@ export class VscodeSettings implements IVscodeSettings {
139131
return this.getConfigValue<boolean>(configKeys.DISABLE_INTELLISENSE_AUTO_GEN);
140132
}
141133

142-
public get defaultTimestampFormat(): string {
143-
return this.getConfigValue<string>(configKeys.DEFAULT_TIMESTAMP_FORMAT);
144-
}
145-
146134
public get analyzeOnOpen(): boolean {
147135
return this.getConfigValue<boolean>(configKeys.ANALYZE_ON_OPEN);
148136
}

src/common/constants.ts

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ export const messages = {
4242
export const statusBarPriority = {
4343
PORT: 20,
4444
OPEN_PORT: 30,
45-
BAUD_RATE: 40,
4645
TIMESTAMP_FORMAT: 50,
4746
BOARD: 60,
4847
ENDING: 70,

src/extension.ts

+8-10
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export async function activate(context: vscode.ExtensionContext) {
119119
}
120120

121121
if (!SerialMonitor.getInstance().initialized) {
122-
SerialMonitor.getInstance().initialize();
122+
SerialMonitor.getInstance().initialize(context);
123123
}
124124

125125
const arduinoPath = arduinoContextModule.default.arduinoApp.settings.arduinoPath;
@@ -148,7 +148,7 @@ export async function activate(context: vscode.ExtensionContext) {
148148
const registerNonArduinoCommand = (command: string, commandBody: (...args: any[]) => any, getUserData?: () => any): number => {
149149
return context.subscriptions.push(vscode.commands.registerCommand(command, async (...args: any[]) => {
150150
if (!SerialMonitor.getInstance().initialized) {
151-
SerialMonitor.getInstance().initialize();
151+
SerialMonitor.getInstance().initialize(context);
152152
}
153153
await commandExecution(command, commandBody, args, getUserData);
154154
}));
@@ -323,12 +323,10 @@ export async function activate(context: vscode.ExtensionContext) {
323323
// serial monitor commands
324324
const serialMonitor = SerialMonitor.getInstance();
325325
context.subscriptions.push(serialMonitor);
326-
registerNonArduinoCommand("arduino.selectSerialPort", () => serialMonitor.selectSerialPort(null, null));
326+
registerNonArduinoCommand("arduino.selectSerialPort", () => serialMonitor.selectSerialPort());
327327
registerNonArduinoCommand("arduino.openSerialMonitor", () => serialMonitor.openSerialMonitor());
328-
registerNonArduinoCommand("arduino.changeBaudRate", () => serialMonitor.changeBaudRate());
329328
registerNonArduinoCommand("arduino.changeTimestampFormat", () => serialMonitor.changeTimestampFormat());
330-
registerNonArduinoCommand("arduino.sendMessageToSerialPort", () => serialMonitor.sendMessageToSerialPort());
331-
registerNonArduinoCommand("arduino.closeSerialMonitor", (port, showWarning = true) => serialMonitor.closeSerialMonitor(port, showWarning));
329+
registerNonArduinoCommand("arduino.closeSerialMonitor", (port) => serialMonitor.closeSerialMonitor(port));
332330

333331
const completionProvider = new completionProviderModule.CompletionProvider();
334332
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(ARDUINO_MODE, completionProvider, "<", '"', "."));
@@ -344,7 +342,7 @@ export async function activate(context: vscode.ExtensionContext) {
344342
}
345343

346344
if (!SerialMonitor.getInstance().initialized) {
347-
SerialMonitor.getInstance().initialize();
345+
SerialMonitor.getInstance().initialize(context);
348346
}
349347
vscode.commands.executeCommand("setContext", "vscode-arduino:showExampleExplorer", true);
350348
})();
@@ -359,7 +357,7 @@ export async function activate(context: vscode.ExtensionContext) {
359357
await arduinoActivatorModule.default.activate();
360358
}
361359
if (!SerialMonitor.getInstance().initialized) {
362-
SerialMonitor.getInstance().initialize();
360+
SerialMonitor.getInstance().initialize(context);
363361
}
364362
vscode.commands.executeCommand("setContext", "vscode-arduino:showExampleExplorer", true);
365363
}
@@ -453,14 +451,14 @@ export async function activate(context: vscode.ExtensionContext) {
453451

454452
setTimeout(() => {
455453
// delay to detect usb
456-
usbDetectorModule.UsbDetector.getInstance().initialize(context.extensionPath);
454+
usbDetectorModule.UsbDetector.getInstance().initialize(context);
457455
usbDetectorModule.UsbDetector.getInstance().startListening();
458456
}, 200);
459457
}
460458

461459
export async function deactivate() {
462460
const monitor = SerialMonitor.getInstance();
463-
await monitor.closeSerialMonitor(null, false);
461+
await monitor.closeSerialMonitor(null);
464462
usbDetectorModule.UsbDetector.getInstance().stopListening();
465463
Logger.traceUserData("deactivate-extension");
466464
}

src/serialmonitor/outputBuffer.ts

-44
This file was deleted.

0 commit comments

Comments
 (0)