【发布时间】:2020-02-12 23:02:59
【问题描述】:
我正在使用 PuTTY 连接到 industrial cellular router,通过 AT-Commands 发送短信。
在 PuTTY 中,我选择 Telnet 并在端口 23 上连接到路由器的 IP 地址:
Router loging: root
Password: ****
# gsmat ATE1 // turn echo on
OK
# gsmat AT+CMGF=1 // switch to text mode (0 = PDU mode)
OK
# gsmat AT+CMGS=\"0664XXXXXXXX" // "tel. number"
> Test message [ENTER] // new line (expected)
> [Ctrl-Z] // nothing happens, also with Alt+0026, etc.
> [Ctrl-D]
> -sh: syntax error: unterminated quoted string
#
我通常应该在 Ctrl+Z 上发送 SMS(根据文档、论坛等),但没有任何反应。 所以我尝试了以下方法:
- ASCII 码:[Alt+0026] 代替 (Ctrl+Z),没有任何反应,十六进制:0x1A
- 从 Notepad++ 复制并粘贴 [SUB],没有任何反应(将普通文本复制并粘贴到 PuTTY 中可以正常工作)
- [Ctrl-Y] 在某些论坛中的建议,可能是因为德语键盘布局(也没有任何反应)
- [Ctrl-D],语法错误,输入转义,当然发送失败
我还尝试了不同的工具,例如超级终端、来自 CMD 的 SSH、Hercules tool、...
还有其他人知道如何在这种情况下转义这种文本输入模式吗?
我的目标是通过 C# 服务自动发送 SMS,我只需在输入中添加 (char)26 即可。
inputString = message.Length > 160 ? message.Substring(0, 160) : message;
inputString += (char)26;
connector.Write(inputString);
欢迎提出任何建议
Screenshot: PuTTY connection settings
Screenshot: PuTTY terminal input
【问题讨论】:
-
您在 Ctrl+D 之后得到的错误似乎与 Telnet shell 相关,而不是调制解调器故障。据我所知,在 CTRL+Z 之后,您应该简单地等待(甚至可能需要几十秒),然后得到 OK 或 ERROR。
-
您是否可以直接连接到调制解调器的串行端口而不使用该 shell 实用程序?这只是为了了解导致问题的组件。
-
@Cubo78 是的 Ctrl+D 只是最后一次尝试以某种方式退出文本输入模式。在 Ctrl+Z 发生 nothing 后,我已经等了几分钟。我很确定 0x1A 写在那里,只是因为文本输入模式而没有发送
-
我不使用串口。我通过以太网 TCP/IP 连接到路由器。我可以通过浏览器访问路由器 WebGUI 进行设置。阅读消息等也可以正常工作。问题只是我认为发送消息的“命令”(Ctrl + Z)没有正确注册。我认为这可能是 PuTTY 的问题,但是在测试了不同的工具(超级终端,也可以通过 CMD 进行 SSH)之后,问题仍然存在
-
我知道您是通过 TCP/IP 连接的。但是调制解调器通常可以(也)物理地访问,并且通常可以通过您可以在设备上找到的 USB/串行端口来完成。
标签: sms telnet putty gsm at-command