我正在使用SIM900 GSM模块连接到我的AVR微控制器。 我使用FT232进行数据传输测试。 首先,微控制器发送AT指令,它会响应OK。
AT OK
AT+CMGF=1 OK
AT+CMGS="+9893XXXXXX" returns ERROR and doesn't show ">"
有人能给我建议该怎么做吗?
(关于IT技术问题)我正在使用SIM900 GSM模块连接到我的AVR微控制器。 我使用FT232进行数据传输测试。 首先,微控制器发送AT指令,它会响应OK。
AT OK
AT+CMGF=1 OK
AT+CMGS="+9893XXXXXX" returns ERROR and doesn't show ">"
有人能给我建议该怎么做吗?
(关于IT技术问题)使用命令AT+CSCS?
将回答您所使用的短信编码类型。正确的答案是“GSM”,如果不是,您应该通过命令AT+CSCS="GSM"
进行设置。
请记住,在短信文本结束时使用“Ctrl+Z”(而不是“Enter”)。
您没有将所有参数传递给命令。
命令格式如下:
AT+CMGS=<number><CR><message><CTRL-Z>
在哪:
<CR> = ASCII character 13
<CTRL-Z> = ASCII character 26
你只传递了数字,如果没有 <CR> ,你将看不到消息中的 > 符号。
示例:
AT+CMGS="+9893XXXXXX"
> This is the message.→
+CMGS:<mr>
OK
其中 <mr>
表示消息参考。
0x0D
(=13),但 Ctrl-Z 是 0x1A
(=26)。 - bvdb如果AT+CSCS?
命令返回UCS2,则许多参数需要编码为UTF-16编码的十六进制字符串,因此电话号码将变成“002B0039003800390033...”,短信文本也需要以同样的方式编码。如果您不需要UCS2编码,则最简单的方法是切换到GSM编码(或另一个可用集合中的其他编码,如AT+CSCS=?
命令所示)。
AT+CMGF?
,您应该收到+CMGF: 1
。如果您收到+CMGF: 0
,请输入AT+CMGF=1
。这将把消息格式从PDU模式更改为文本模式。我不确定它们都确切意味着什么,但这解决了我的问题。
我遇到了同样的错误。之前的建议都是正确的。我只是想分享我的经验。我使用SIM800L模块。在我的项目开始时,它被设置为AT+CMGF=1。但事实证明,SIM模块偶尔会忘记这个参数。程序无法发送和读取短信。我曾尝试几天寻找问题的原因。
我的建议是,在使用CMGS或CMGR命令之前,检查一些参数,如CMGF=1,CSCS="GSM",CMEE=2。