14

我正在拼命地让蓝牙加密狗与我的 Arduino 一起工作,但我无法向它发送它需要的命令。当我通过 USB 转 UART 芯片将它插入我的计算机并C从 PuTTY 发送命令()然后按时,我可以使用它Enter

蓝牙加密狗的命令表显示我正在尝试发送的命令,C<cr>但我不知道如何从 Arduino 代码中发送正确的回车符。我已经尝试使用该Serial.println()功能以及将\r角色添加到我的当前角色中,Serial.write("C\r")但这些都不起作用。

我怎样才能做到这一点?

4

9 回答 9

10

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

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

于 2013-07-31T03:50:27.903 回答
10

在修改后的 PuTTY 中可以发送 CR+LF。源代码在https://github.com/gniemirowski/putty-crlf和 Windows 二进制文件在https://www.grzegorz.net/pliki/putty-crlf.zip当你运行这个版本只是去终端 - >键盘并为“回车键”选项选择“CR LF”。

在此处输入图像描述

于 2018-09-05T21:00:21.627 回答
7

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

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

换行/换行 换行 ESC [20h Line feed ESC [20l

于 2016-07-19T20:42:45.633 回答
2

如果您观看 ascii 表或类似的参考资料,您可能会觉得有趣:\r ou \x0D

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

于 2012-11-08T13:44:41.293 回答
2

修改后的 PuTTY 是最简单的解决方案。如果你想坚持使用标准的 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
于 2020-09-27T12:09:40.733 回答
1

在标准配置中(在 Windows 和 Linux 上),如果您键入“help”然后按 enter,串行端口上将出现以下字节链(通过 RS232 与外部连接终端和逻辑分析仪检查):

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

所以看起来 PUTTY 将 CR 放在 ENTER 上(无论您使用的是 Linux 还是 Windows)。

于 2013-07-28T22:32:37.443 回答
1

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

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

并且避免Serial.print,因为它旨在为人类可读,所以格式化。

参考: 打印

于 2014-06-18T13:17:51.173 回答
-1

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

于 2012-08-19T18:14:27.113 回答
-1

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

Serial.write(13);

而且因为下一个“打印”的字符会提供剩余的文本,所以没关系。

于 2015-07-24T16:04:50.447 回答