AT指令 - USSD

16

我正在使用Linux下的串行端口软件Minicom与我的GSM调制解调器进行交互。现在,我想使用移动运营商提供的AT命令服务之一。

接下来,我想查看我的余额:

AT+CUSD=1,*555*87*1234#

OK

+CUSD: 1,"this service will deduct you 5cent from your balance, to continue please enter 1",15

所以,我发送了“1”,但什么都没有发生,而且会话被关闭了。

AT+CUSD=1,1

OK

没有发生任何事情,但会话已关闭。

使用普通手机,在输入1后,我将获得我的当前余额。

2个回答

22

该命令的格式为AT+CUSD=[<n>[,<str>[,<dcs>]]],其中第二个参数<str>是一个应该用双引号括起来的字符串。例如:

AT+CUSD=1,"*555*87*1234#"
AT+CUSD=1,"1"

有关AT+CUSD的更多细节,请参见27.007,有关通用AT命令处理,请参见V.250


如果您的手机对AT+CUSD=1,1给出OK响应,则非常糟糕,它应该给出ERROR。 V.250对此非常明确:

字符串常量应在开头和结尾处使用双引号字符进行限定


问题已经解决 :) 其实我的账户一开始是零,正常情况下我应该收到一个错误提示说“我的余额不足”,但是在我将钱转入账户后,我再次进行了测试,现在我看到了确认消息和... - atari83

13
AT+CUSD=1,"your_service_code",15

因此,针对您的情况,

AT+CUSD=1,"*555*87*1234#",15

别忘了最后面的15。这个问题帮助我解决了问题。


适用于SIM900a GSM模块。谢谢。 - Md. Minhazul Haque
能否解释一下 15 - hong4rc
1
@hong4rc 15是GSM 3.38的编码方案,更多信息请查看此处 https://m2msupport.net/m2msupport/ussd-how-to-send-ussd-short-codes-with-at-command/。 - Nassim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接