diff --git a/README.md b/README.md index 269d30b6..4a16c088 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,8 @@ The following Visual Studio Code settings are available for the Arduino extensio "arduino.commandPath": "run-arduino.bat", "arduino.additionalUrls": "", "arduino.logLevel": "info", - "arduino.enableUSBDetection": true + "arduino.enableUSBDetection": true, + "arduino.disableTestingOpen": false } ``` - `arduino.path` - Path to Arduino, you can use a custom version of Arduino by modifying this setting to include the full path. Example: `C:\\Program Files\\Arduino` for Windows, `/Applications` for Mac, `/home/$user/Downloads/arduino-1.8.1` for Linux. (Requires a restart after change). The default value is automatically detected from your Arduino IDE installation path. @@ -66,6 +67,7 @@ The following Visual Studio Code settings are available for the Arduino extensio - `arduino.additionalUrls` - Additional URLs for 3rd party packages. You can have multiple URLs in one string with comma(,) as separator, or have a string array. The default value is empty. - `arduino.logLevel` - CLI output log level. Could be info or verbose. The default value is `"info"`. - `arduino.enableUSBDetection` - Enable/disable USB detection from the VSCode Arduino extension. The default value is `true`. +- `arduino.disableTestingOpen` - Disable/enable auto sending a test message to serial port for checking open status. The default value is `false` (a test message will be sent). The following settings are per sketch settings of the Arduino extension. You can find them in `.vscode/arduino.json` under the workspace. diff --git a/package.json b/package.json index 8037e431..1132c2df 100644 --- a/package.json +++ b/package.json @@ -436,6 +436,10 @@ "arduino.enableUSBDetection": { "type": "boolean", "default": true + }, + "arduino.disableTestingOpen": { + "type": "boolean", + "default": false } } }, diff --git a/src/arduino/vscodeSettings.ts b/src/arduino/vscodeSettings.ts index 408760c9..bc9f43ce 100644 --- a/src/arduino/vscodeSettings.ts +++ b/src/arduino/vscodeSettings.ts @@ -10,6 +10,7 @@ const configKeys = { LOG_LEVEL: "arduino.logLevel", AUTO_UPDATE_INDEX_FILES: "arduino.autoUpdateIndexFiles", ENABLE_USB_DETECTOIN: "arduino.enableUSBDetection", + DISABLE_TESTING_OPEN: "arduino.disableTestingOpen", }; export interface IVscodeSettings { @@ -18,6 +19,7 @@ export interface IVscodeSettings { additionalUrls: string | string[]; logLevel: string; enableUSBDetection: boolean; + disableTestingOpen: boolean; updateAdditionalUrls(urls: string | string[]): void; } @@ -53,6 +55,10 @@ export class VscodeSettings implements IVscodeSettings { return this.getConfigValue(configKeys.ENABLE_USB_DETECTOIN); } + public get disableTestingOpen(): boolean { + return this.getConfigValue(configKeys.DISABLE_TESTING_OPEN); + } + public async updateAdditionalUrls(value) { await this.setConfigValue(configKeys.ADDITIONAL_URLS, value, true); } diff --git a/src/serialmonitor/serialportctrl.ts b/src/serialmonitor/serialportctrl.ts index 5a252093..cc282773 100644 --- a/src/serialmonitor/serialportctrl.ts +++ b/src/serialmonitor/serialportctrl.ts @@ -3,6 +3,7 @@ import * as os from "os"; import { OutputChannel, QuickPickItem, StatusBarAlignment, StatusBarItem, window } from "vscode"; +import { VscodeSettings } from "../arduino/vscodeSettings"; interface ISerialPortDetail { comName: string; @@ -78,6 +79,11 @@ export class SerialPortCtrl { this._currentSerialPort = new SerialPortCtrl.serialport(this._currentPort, { baudRate: this._currentBaudRate }); this._outputChannel.show(); this._currentSerialPort.on("open", () => { + if (VscodeSettings.getInstance().disableTestingOpen) { + this._outputChannel.appendLine("[Warning] Auto checking serial port open is disabled"); + return resolve(); + } + this._currentSerialPort.write("TestingOpen", "Both NL & CR", (err) => { // TODO: Fix this on the serial port lib: https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/795 if (err && !(err.message.indexOf("Writing to COM port (GetOverlappedResult): Unknown error code 121") >= 0)) {