我正在使用 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 命令似乎真的是针对那些确切知道他们在做什么的人。