我正在尝试使用 ECHO 或类似的命令行将以下内容发送到 COM1 串行端口(我也尝试过下载一个名为 Serialsend 的小程序,但我不知道如何发送相当于 CTRL+Z 的内容) . 这是通过西门子 TC35 GAM 模块发送短信。我可以通过超级终端进行测试,效果很好,但我不知道如何在结束确认消息的内容。
这就是我所拥有的:
AT
AT+CMGF=1
AT+CMSG="+xxxxxxxxxxx"
HELLO
现在,在我要发送的消息“Hello”之后,我必须发送
CTRL+Z
。但不知道该怎么做,我已经尝试过:
AT
AT+CMGF=1
AT+CMSG="+xxxxxxxxxxx"
HELLO
\x1A
当我读到一些内容时,这相当于这样做,但它没有起作用。
有人可以帮我吗?我已经找到了解决方案,但它们不是我需要的命令行。
我也尝试过使用这种格式:
ECHO AT > COM1:
但是因为我不知道如何发送
CTRL+Z
我不知道它是否有效。 我编写了您提到的免费命令行程序 SerialSend。由于这个问题最初是发布的,我添加了一个额外的功能,允许在通过串行端口发送的文本中包含任意字节值(以十六进制格式)。例如,要发送 Ctrl-Z(十进制 26,十六进制 0x1A),只需使用以下命令:
有效:)
输入此命令 Serial.println((char)26);在Arduino代码中...串行监视器上将出现一个方框。复制该方块并粘贴到 Notepad++ 中。它将显示为黑色背景的 SUB。每当您想输入 cntrl+z 时,只需复制此 SUB 并粘贴到串行监视器中即可。它有效。
在我的带有 USB gsm 调制解调器的系统中,下一个脚本可以工作:
#!/bin/bash
#usage: sendsms <mobile number> <text to send>
printf "AT+CMGF=1\r\nAT+CMGS=\"$1\"\r\n$2\x1a" > /dev/ttyUSB3
如您所见,printf 将 ctrl-z 发送为 \x1a