Don't process virtual terminal sequences in RAW encoding mode

This commit is contained in:
Edward Wright 2023-02-16 10:06:13 -05:00
parent a5f3f36fb6
commit ad7a3fa920

View File

@ -85,25 +85,28 @@ namespace SimplySerial
static void Main(string[] args) static void Main(string[] args)
{ {
// attempt to enable virtual terminal escape sequence processing
try
{
var iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleMode(iStdOut, out uint outConsoleMode);
outConsoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(iStdOut, outConsoleMode);
}
catch
{
// if the above fails, it doesn't really matter - it just means escape sequences won't process nicely
}
// load and parse data in boards.json // load and parse data in boards.json
LoadBoards(); LoadBoards();
// process all command-line arguments // process all command-line arguments
ProcessArguments(args); ProcessArguments(args);
// attempt to enable virtual terminal escape sequence processing
if (!convertToPrintable)
{
try
{
var iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleMode(iStdOut, out uint outConsoleMode);
outConsoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(iStdOut, outConsoleMode);
}
catch
{
// if the above fails, it doesn't really matter - it just means escape sequences won't process nicely
}
}
Console.OutputEncoding = encoding; Console.OutputEncoding = encoding;
// verify log-related settings // verify log-related settings
@ -639,7 +642,7 @@ namespace SimplySerial
string newMessage = ""; string newMessage = "";
foreach (byte c in message) foreach (byte c in message)
{ {
if ((c > 31 && c < 128) || (c == 8) || (c == 9) || (c == 10) || (c == 13) || (c == 27)) if ((c > 31 && c < 128) || (c == 8) || (c == 9) || (c == 10) || (c == 13))
newMessage += (char) c; newMessage += (char) c;
else else
newMessage += $"[{c:X2}]"; newMessage += $"[{c:X2}]";