【问题标题】:how to get balance by USSD commands?如何通过 USSD 命令获得平衡?
【发布时间】:2013-08-29 10:21:29
【问题描述】:

我已经厌倦了在 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。

【问题讨论】:

    标签: modem ussd


    【解决方案1】:

    在发送 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 命令并读取端口的响应。

    【讨论】:

      【解决方案2】:

      我发现我的调制解调器使用了多个端口,我应该在第一个端口连接以发送我的命令并监听另一个端口以获取 USSD 命令的结果

      【讨论】:

      • 端口是如何命名的?
      • 如果您查看控制面板\系统和安全\系统并单击设备管理器,您将找到已安装的端口名称
      • 我知道。我很感兴趣你提到的那些在你的案例中是如何命名的。
      【解决方案3】:

      使用 Hyperterm 串行监视器应用程序 (https://www.hilgraeve.com/hyperterminal-trial/) 试试这个

      首先将调制解调器转换为 PDU 模式:

      AT+CMGF=0
      

      第二次 USSD 代码发送:

      AT+CUSD=1,"#132#",15 
      

      (使用您的国家/地区运营商代码)

      最终从终端读取输出:)

      【讨论】:

        【解决方案4】:

        我只是在我的国家使用这个“AT+CUSD=1,'*120#',15”,USSD 代码是 *120#,但请记住,如果您使用它与代码一起使用,则必须在末尾添加 crlf 字符希望对您有所帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-22
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          相关资源
          最近更新 更多