Is there a way to put Serial Monitor into a dumb terminal mode?
The default requires you to type out a string then enter it. That's a great development tool but I just want to enter ASCII commands from the keyboard and not need to "enter" everything?
Right now I am hopping over to HypeTerminal but then I have to enable / disable the port every time I need to upload. Arduino will not share the port with HyperTerminal.
Not the end of the world but staying within the Arduino IDE would be more convenient.
Ok, I'm with you. Yeah, the serial monitor is merely some more than a monitor. I researched another variant, to share the serial port between Arduino IDE and a terminal program in Linux. I'm sure it can be done, but after X dead ends, I moved on. It would be sweet if Arduino RnD would add some open source terminal soft, so you could have ASCII, VT and so on.
By "serial Port Monitor", do you mean Serial Monitor? If so, as an alternative to clicking the "Send" button, you can instead press the Enter key on your keyboard. So you would only need to press two keys on your keyboard: Space, Enter.
You can chose from several options of what additional characters Serial Monitor will send when you press the Enter key:
No Line Ending: Don't add any additional characters.
New Line": Add 0xA.
Carriage Return: Add 0xD.
Both NL and CR": Add 0xD and 0xA.
So if you change the program on the device you are communicating with so that it uses one of those as the signal to start/stop the loop, then you would have the thing you are looking for.
The developers are tracking the proposal here:
If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:
Please only comment on the GitHub issue thread if you have new technical information that will assist with the resolution. General discussion and support requests are always welcome here on the Arduino Forum.
That issue was written before the time the full support for extending Arduino IDE's capabilities via VS Code extensions was added. I haven't investigated what the limitations of the extension framework might be in this particular area, but it might be that it is now possible to add Serial Monitor alternatives to Arduino IDE via extensions. I think that extensions should be able to get the port address from Arduino IDE. However, I am not sure whether they are able to get the signal that indicates the start and completion of an upload, which is needed to do the automagical port control juggling that allows us to upload a sketch to a board while its port is open in Serial Monitor.
I don't just want key ECHO, I want cursor control... using unprintable chars if possible or ESC-codes otherwise.
What that would enable would make Arduino IDE code development many times better. I can achieve the same ends using terminal software but not pass that along to new members as it's a Pain In The Ass.
Not that I am aware of. I'm not very knowledgeable about the internals of the Arduino IDE application, but I suspect this could only be done by modifying the Arduino IDE codebase. Maintaining a modified version of Arduino IDE, keeping it up to date with the fixes and advancements made in the upstream project is likely to be quite labor intensive.
This is why I would suggest instead investigating the possibility of implementing your own Serial Monitor alternative via a VS Code extension. This way you would only need to maintain the extension codebase, which is independent from the Arduino IDE codebase with the exception of interfacing with the API which is less likely to have breaking changes.
As I mentioned above, it is possible that you might discover that the extension API simply doesn't provide the special capabilities that are required to achieve feature parity with Serial Monitor, but if this is something you want then it is worth an investigation at least.
There is a ton of information on the Internet about creating general VS Code extensions. Unfortunately the developers never formal documented the Arduino-specific data that Arduino IDE provides for the use of extensions, beyond the standardized VS Code extensions framework, but you can study the package that provides it here:
These two extensions will serve as a useful reference for making extensions that use the Arduino-specific data: