Какие символы отправляются в Windows HyperTerminal при нажатии клавиши "Ввод"
В настоящее время я реализую терминал последовательного соединения в приложении C++ под Windows. Я общался с моим оборудованием с помощью Windows HyperTerminal через последовательное соединение.
Например, с HyperTerminal:
> C (then hit Enter)
> Bla bla bla... Answer from the equipment
С моим последовательным соединением на C++:
send("C\n\r");
ничего не случилось. Просто дождитесь символа "Конец команды".
После небольшого прочтения о LF/CR в блоге Джеффа Этвуда, я попробовал любые возможные комбинации CR + LF. Никто из них не делает работу.
Поэтому мой вопрос в том, какую последовательность символов HyperTerminal интерпретирует как "ввод введен, давайте обработаем".
PS: Мое последовательное соединение работает отлично, я использую его обоими способами уже несколько раз, с этой стороны проблем нет.
1 ответ
По умолчанию он эмулирует телетайп, поэтому отправляет возврат каретки (код ASCII 0x0d или '\r') при нажатии клавиши Enter. На клавиатурах больше нет клавиши перевода строки, как это было раньше у телетипов, поэтому вам нужно нажать Ctrl+J, чтобы сгенерировать перевод строки (код ASCII 0x0a или '\n').
Имейте в виду нормальную последовательность, возврат каретки будет первым, "\r\n". Возможно, вы захотите настроить свой код, если вы сейчас используете send("C\n\r").
Прошло слишком много времени с тех пор, как я возился с ним, но в iirc была конфигурация, позволяющая ему отправлять перевод строки или cr+lf при нажатии клавиши Enter.