按Enter键时PuTTY发送了什么?

时间:2012-08-17 00:01:15

标签: arduino ascii putty control-characters

我正在拼命想让蓝牙适配器与我的Arduino配合使用,但是我无法向它发送它需要的命令。当我通过USB转UART芯片将其插入计算机并从PuTTY发送命令(C)然后按Enter时,我可以使用它。

蓝牙适配器的command sheet表示我试图发送它的命令C<cr>但我无法弄清楚如何从Arduino代码发送正确的回车符。我尝试使用Serial.println()函数以及将\r字符添加到我当前的Serial.write("C\r"),但这些都不起作用。

我怎样才能做到这一点? - 谢谢。

9 个答案:

答案 0 :(得分:6)

有趣的是,我可以在Win 7上报告相反的情况:PuTTY,我的嵌入式项目只通过COM端口发送'\ r'。好奇,阅读:令人难以理解,但我只是在串行连接的另一端寻找任何一个字符。

然后,如果在终端选项下启用'每个CR中的隐式LF',它将同时发送'\ r \ n'。默认行为似乎类似于Commodore机器:D(http://en.wikipedia.org/wiki/Newline)......谁知道......

答案 1 :(得分:3)

PuTTY模拟模拟vt100的xterm。要在按下Enter键时让putty发送CR / LF,请在连接到串行设备后键入ESC [20h in putty。这将VT100 LNM设为true。

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

换行/换行新换行ESC [20h换行ESC [20l

答案 2 :(得分:2)

如果您观看ascii表或类似的参考文献,您可能会感兴趣:\ r ou \ x0D

为了更好地理解,请参阅:http://www.grok2.com/sedfaq6.html

答案 3 :(得分:2)

在arduino程序中,只需使用Serial.write和两个字符代码:

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

并避免使用Serial.print因为它是人类可读的,所以格式化。

参考:write print

答案 4 :(得分:2)

在修改后的PuTTY中可以发送CR + LF。源代码位于https://github.com/gniemirowski/putty-crlf,Windows二进制文件位于https://www.grzegorz.net/pliki/putty-crlf.zip,运行此版本时,只需转到“终端”->“键盘”,然后为“输入键”选项选择“ CR LF”。

enter image description here

答案 5 :(得分:0)

我几乎可以肯定您正在寻找\n新行字符。

答案 6 :(得分:0)

昨天我正在尝试解决其他问题。 在标准配置中(在Windows和Linux上),如果您键入&#34; help&#34;然后按串口输入将出现跟随位串(通过RS232和逻辑分析仪通过外部连接终端检查):

0x68(h)0x65(e)0x6c(l)0x70(p)0x0d(CR:回车U + 000A)

所以看起来像PUTTY将CR放在ENTER上(无论你是在Linux还是Windows上)

答案 7 :(得分:0)

我尝试了这个非常简单的代码(cr =回车)

Serial.write(13);

因为下一个&#34;打印&#34; caracters将提供剩余文本,没关系。

答案 8 :(得分:0)

修改后的PuTTY是最简单的解决方案。如果您要坚持使用标准腻子,还有其他一些选择... 您可以在按Enter之前使用ctrl + j发送换行符,但这很麻烦。 要使其自动化,可以在激活PuTTY窗口后使用AutoHotKey将{ENTER}更改为^ J {ENTER}:

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

要仅对一个PuTTY窗口执行此操作,可以为AHK命名该窗口:

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