GSM 调制解调器,带有 AT 命令抛出错误的 USSD

问题描述

我正在使用 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 卡,我可以从设备发送短信和电子邮件,但到目前为止我唯一不能做的是 USSD 命令来检查通话时间余额。

我确实想知道“15”是否可能是蜂窝提供商独有的,但我尝试了其他几个,但没有发现任何有用的东西,完全相同的答复。

我已将 SIM 卡放入手机中,可以使用 USSD 号码了。 我还确保 AT+CREG 恢复正常,AT+CSQ 给出 14,99,所以我知道它已在网络上注册并且信号良好。

任何想法将不胜感激。 我觉得我在设置命令或其他东西时遗漏了一些基本的东西,但这对我来说仍然很新,而且数据表 AT 命令似乎确实针对那些确切知道自己在做什么的人。

解决方法

我从来没有让它与我正在处理的调制解调器一起使用,但后来我得到了一个新的调制解调器 (SIM7600),现在 USSD 代码可以完美运行。

其他一切都 100% 相同,除了调制解调器之外没有任何变化。 我不得不说它是调制解调器,没有别的。