Что отправляет PuTTY, когда я нажимаю клавишу Enter?

Я отчаянно пытаюсь заставить Bluetooth-ключ работать с моим Arduino, но я не могу отправить ему нужную команду. Я могу использовать его, когда подключаю его к своему компьютеру через чип USB-UART и отправляю команду (C) из PuTTY, а затем нажимаю Enter.

В командном листе ключа Bluetooth указано, что команда I am пытаюсь отправить его C<cr>, но я не могу понять, как отправить правильный символ возврата каретки из кода Arduino. Я пытался использовать функцию Serial.println(), а также добавить символ \r к моему текущему Serial.write("C\r"), но ни один из них не работает.

Как я могу этого добиться?


person Sponge Bob    schedule 17.08.2012    source источник
comment
Проверьте настройки терминала Putty, чтобы узнать, что он настроен для отправки; вы можете настроить его для отправки любых окончаний строк, которые вы хотите.   -  person Wooble    schedule 17.08.2012
comment
@Wooble Где реконфигурация PuTTY, где я могу ее найти?   -  person Sponge Bob    schedule 17.08.2012


Ответы (9)


Интересно, что я могу сообщить об обратном для Win 7: PuTTY для меня, и мой встроенный проект отправляет ТОЛЬКО \r через COM-порт. Любопытно, прочитайте: досадно необъяснимо, но я просто ищу любой символ на другом конце последовательного соединения.

Затем, если вы включите неявный LF в каждом CR в параметрах терминала, он отправит оба файла \r\n. Поведение по умолчанию похоже на машину Commodore :D (http://en.wikipedia.org/wiki/Newline). кто знал...

person Sowka    schedule 31.07.2013
comment
Только что столкнулся с этим, спасибо за упоминание неявной настройки LF. - person Daniel Buckmaster; 12.10.2013
comment
Я тоже только что столкнулся с этим. Я действительно рад, что сначала проверил, прежде чем подключить его к своему PIC; как показывают сообщения всех остальных, это довольно неожиданно. Моя область ясно показывает, что по умолчанию Putty отправляет только \r. Это не задокументировано. - person carveone; 26.07.2014
comment
@carveone, я нашел документы здесь см. разд. 4.6.14:‹br/› По умолчанию PuTTY отправляет код новой строки Telnet при нажатии клавиши «Ввод» вместо отправки Control-M, как в большинстве других протоколов. - person tsul; 18.11.2015
comment
Но это должно относиться только к соединениям telnet, а не к последовательным соединениям. Но вся эта история с \r объясняет, почему я встречал протоколы, оканчивающиеся на \r, а не на \n. Это показывает, что нужно быть очень осторожным, чтобы ничего не предполагать ни о чем :-) Ключ esp8266 требует и cr-lf, и вы должны использовать ввод, а также ctrl-J. Если вы погуглите, то увидите количество людей, которых это зацепило. Enter - это CR, а не LF... - person carveone; 18.11.2015
comment
Нет, «Неявный LF в каждом CR» этого не делает. В оригинальном PuTTY нет возможности отправлять LF при нажатии Enter. - person grzegorz; 05.09.2018

Отправка CR+LF возможна в модифицированном PuTTY. Исходный код доступен по адресу https://github.com/gniemirowski/putty-crlf и в двоичном файле Windows. на https://www.grzegorz.net/pliki/putty-crlf.zip Когда вы запустите эту версию, просто перейдите в «Терминал» -> «Клавиатура» и выберите «CR LF» для опции «Ключ ввода».

введите описание изображения здесь

person grzegorz    schedule 05.09.2018

PuTTY эмулирует xterm, который эмулирует vt100. Чтобы putty отправлял CR/LF при нажатии Enter, введите ESC[20h в putty после подключения к последовательному устройству. Это устанавливает VT100 LNM в истинное положение.

http://vt100.net/docs/vt100-ug/chapter3.html

Перевод строки/новая строка Новая строка ESC [20h Перевод строки ESC [20l

person bubbasnmp    schedule 19.07.2016
comment
Это работает! Но можно ли его сохранить в сеансе, чтобы мне не приходилось вводить его при каждом запуске сеанса? - person habakuk; 23.10.2018

Если вы посмотрите таблицу ascii или аналогичную ссылку, вам может быть интересно: \r ou \x0D

Для лучшего понимания см.: http://www.grok2.com/sedfaq6.html

person user1701341    schedule 08.11.2012

В программе Arduino просто используйте Serial.write и коды обоих символов:

Serial.write(13);    // CR
Serial.write(10);    // LF

И избегайте Serial.print, так как он предназначен для чтения человеком, поэтому отформатирован.

ссылки: запись печать

person Luis Siquot    schedule 18.06.2014

Модифицированный PuTTY — самое простое решение. Если вы хотите придерживаться стандартного PuTTY, есть и другие варианты... Вы можете отправить новую строку, используя ctrl+j, прежде чем нажимать ввод, но это ерунда. Чтобы автоматизировать это, вы можете использовать AutoHotKey, чтобы изменить {ENTER} на ^J{ENTER}, когда у вас активно окно PuTTY:

#if WinActive("ahk_exe putty.exe")
    Enter::
        SendInput ^J{Enter}
    Return
#if

Чтобы сделать это только для одного окна PuTTY, вы можете указать AHK имя окна:

#if WinActive("COM8 - PuTTY")
    Enter::
        SendInput ^J{Enter}
    Return
#if
person vmTim    schedule 27.09.2020

Я почти уверен, что вы ищете символ новой строки \n.

person uDalillu    schedule 19.08.2012

В стандартной конфигурации (в Windows и Linux) если набрать help и нажать Enter, на последовательном порту появится следующая цепочка байтов (проверено на внешнем подключенном терминале через RS232 и логическом анализаторе):

0x68(h) 0x65(e) 0x6c(l) 0x70(p) 0x0d(CR: возврат каретки U+000D)

Таким образом, похоже, что PUTTY помещает CR на ENTER (независимо от того, находитесь ли вы в Linux или Windows).

person Mazeryt    schedule 28.07.2013

Я попробовал этот очень простой код (cr = возврат каретки)

Serial.write(13);

И поскольку следующие «печатные» символы будут кормить остаточный текст, все в порядке.

person yannick85    schedule 24.07.2015