AVRマイクロコントローラーに接続するSIM900 GSMモジュールを使用しています。 FT232でテストして、データの送信を確認しました。最初のマイクロがATを送信します
AT OK
AT+CMGF=1 OK
AT+CMGS="+9893XXXXXX" returns ERROR and doesn't show ">"
誰かが私に何をすべきかをアドバイスできますか?
コマンドAT+CSCS?
は、使用されているsms-encodingのタイプを答えます。正解は「GSM」です。そうでない場合は、AT+CSCS="GSM"
コマンドで設定してください。
また、SMSテキストの最後として「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>
はメッセージ参照です。
AT+CSCS?
コマンドはUCS2を返すため、多くの引数をUTF-16エンコードの16進文字列としてエンコードする必要があるため、電話番号は「002B0039003800390033 ...」となり、SMSテキストが必要になります同じ方法でエンコードされます。UCS2エンコードが必要ない場合、最も簡単な方法は、GSMエンコード(またはAT+CSCS=?
コマンド)
時々問題はあなたがいるテキストモードです。AT+CMGF?
を入力すると、+CMGF: 1
が表示されます。代わりに+CMGF: 0
を受け取った場合は、AT+CMGF=1
と入力します。これにより、メッセージ形式がPDUモードからテキストモードに変更されます。これらのどちらが正確に何を意味するのかはわかりませんが、これで問題が解決しました。