web-dev-qa-db-ja.com

AT + CMGSはエラーを返します

AVRマイクロコントローラーに接続するSIM900 GSMモジュールを使用しています。 FT232でテストして、データの送信を確認しました。最初のマイクロがATを送信します

AT OK
AT+CMGF=1 OK
AT+CMGS="+9893XXXXXX" returns ERROR and doesn't show ">"

誰かが私に何をすべきかをアドバイスできますか?

15
Mohammad Farahi

コマンドAT+CSCS?は、使用されているsms-encodingのタイプを答えます。正解は「GSM」です。そうでない場合は、AT+CSCS="GSM"コマンドで設定してください。

また、SMSテキストの最後として「Ctrl + Z」(「Enter」ではない)について覚えておいてください。

16
yuriygorskyy

すべてのパラメーターをコマンドに渡しているわけではありません。

コマンドの形式は次のとおりです。

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>はメッセージ参照です。

6
Kobi K

AT+CSCS?コマンドはUCS2を返すため、多くの引数をUTF-16エンコードの16進文字列としてエンコードする必要があるため、電話番号は「002B0039003800390033 ...」となり、SMSテキストが必要になります同じ方法でエンコードされます。UCS2エンコードが必要ない場合、最も簡単な方法は、GSMエンコード(またはAT+CSCS=?コマンド)

2
lav

時々問題はあなたがいるテキストモードです。AT+CMGF?を入力すると、+CMGF: 1が表示されます。代わりに+CMGF: 0を受け取った場合は、AT+CMGF=1と入力します。これにより、メッセージ形式がPDUモードからテキストモードに変更されます。これらのどちらが正確に何を意味するのかはわかりませんが、これで問題が解決しました。

SIM 800 ATコマンドマニュアル

1
Barnaby