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" only。

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 回答
1

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

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

AT+CMGF=0

第二个 USSD 代码发送:

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

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

最后从终端读取输出:)

于 2018-06-27T04:44:22.417 回答
0

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

于 2017-07-03T19:37:15.880 回答