4

Google で USSD コマンドの送信方法を検索するのに疲れました。オペレーターから残高を確認したい。

私が見たサンプルはすべて、次のようなコマンドを使用しています。

 "AT+CUSD=1,\"*140*1#\"\r\n";

それは正しいようです。私はうまくいくと思うこのようなものを使用しています。私は D-Link GSM モデムを持っており、それを使用してこのコマンドを送信すると、スピーカーからノイズが発生します。これは、何かが起こったことを示していると思います。

自分のアプリケーションでモデムを切断したとき、モデムには独自の Windows アプリケーションがあります。モデムのアプリケーションでチェックすると、USSD タブで、自分のアプリケーションで送信したコマンドの結果を見つけることができます。

その後、そのコマンドは正常に機能しますが、コマンドを送信したときに何が起こるか混乱しています。「OK」が返され、オペレーターの応答が返されず、モデムのアプリケーションがその応答をどのように読み取ることができるか????????

これらのコマンドをテストしましたが、結果が得られず、モデムは次のようなものを返すだけです: "AT+CUSD=1,\"*140*​​1#\"\r\n\OK\r\n" のみ。

1) "AT+CUSD=1,\"*140*1#\",15\r\n"

2) "AT+CUSD=1,\"*140*1#\",1\r\n"

3) "AT+CUSD=1,\"*140*1#\",15\r"

4) "AT+CUSD=1,\"*140*1#\",1\r"

5) "AT+CUSD=1,\"*140*1#\""

コマンドの結果を読み取ると、おそらくコマンドが異なるか、モデムに構成を設定する必要があると思います。

モデムがエラーを返さず、常に OK を返すことは、私にとって非常に興味深いことです。

4

4 に答える 4

8

USSD コマンドを送信する前に、メッセージ形式を AT+CMGF=0 に設定する必要があります。これが PDU モード ( http://www.smartposition.nl/resources/sms_pdu.html ) です。AT+CMGF=0 を試すことにする前に、テキスト モードである AT+CMGF=1 を使用するのに困惑しました。

魔法のように働いた。

そう:

  1. メッセージフォーマットを PDU に設定 (AT+CMGF=0)
  2. USSD コマンドを実行してください (AT+CUSD=1,*544*2*3#,15) - メッセージの例
  3. ポートからの応答を読み取ります。

AT コマンドを作成し、ポートからの応答を読み取る方法を既に知っていることを前提としています。

于 2013-09-30T16:05:18.350 に答える
1

ここに画像の説明を入力

モデムが複数のポートを使用していることがわかりました。最初のポートに接続してコマンドを送信し、別のポートをリッスンして USSD コマンドの結果を取得する必要があります

于 2015-04-22T07:29:57.790 に答える