【发布时间】:2021-03-27 16:09:58
【问题描述】:
我正在使用 LilyGo-T-SIM7000G 从我的远程设备(最新固件)发送读数。
我需要知道 SIM 卡上还剩多少通话时间,以便在电量不足时为它充电,以便设备不断向我发送我需要的信息。
我发现很多人使用 AT+CUSD=1,"USSD NUMBER",15 - 将 USSD NUMER 替换为通话时间查询号码。 所以我知道这是可能的,但我担心我搞砸了一些非常基本的东西,我没有意识到我错过了什么或做错了什么。
然而,我只是想出一个错误作为我的调制解调器的响应。
我使用的代码是: (updateSerial(); 函数仅将 AT 命令打印到我的串行监视器并显示调制解调器回复)
Serial.println(F("*************************MODEM BOOTING UP************************"));
modemRestart();
SerialAT.println("AT"); // hand shake
updateSerial();
SerialAT.println("AT+CSCS=\"GSM\""); // set GSM char set
updateSerial();
SerialAT.println("AT+CMGF=0"); // sent to text mode ( not 100% sure if this is needed )
updateSerial();
SerialAT.println("AT+CUSD=1,\"*136#\",15"); // Send USSD
updateSerial();
SerialAT.println("AT"); // hand shake
updateSerial();
我得到的答案是:
*************************MODEM BOOTING UP************************
AT
OK
AT+CSCS="GSM"
OK
AT+CMGF=1
OK
AT+CUSD=1,"*136#",15
ERROR
AT
OK
我查看了SIM7000G的AT命令手册,发现这些命令确实存在。
还有当我运行“AT+CUSD?”时我得到“OK”的返回,所以我知道调制解调器知道如何使用该命令。
我在南非使用 Vodacom sim 卡,我可以从设备发送 SMS 和电子邮件,但目前我唯一不能做的就是检查通话时间余额的 USSD 命令。
我确实想知道“15”是否可能是蜂窝提供商独有的,但我尝试了其他几个,但没有发现任何用处,完全相同的回复。
我已将 SIM 卡放入手机,我可以使用 USSD 号码。 我还确保 AT+CREG 恢复正常,AT+CSQ 给出 14,99,所以我知道它已在网络上注册并且信号良好。
任何想法将不胜感激。 我觉得我在设置命令或某些东西时缺少一些基本的东西,但这对我来说还是相当新的,而且数据表 AT 命令似乎真的是针对那些确切知道自己在做什么的人。
【问题讨论】:
-
如果您配置扩展错误报告
AT+CMEE=2,您可能会得到一些比ERROR更具描述性的错误。 -
您好,抱歉,我花了这么长时间才回复,项目的其他方面进展顺利,所以我开始使用它。我试了一下,但我仍然只是收到正常的错误消息,到目前为止,我已经想出或找到了一种方法来做其他所有事情,但这仍然是一个问题。任何其他想法都会很棒,感谢您的宝贵时间。
标签: arduino gsm at-command gsmcomm