首页 > 解决方案 > 使用 GSMComm 库获取 USSD 结果

问题描述

我正在尝试通过 gsm 调制解调器运行 ussd 代码以获得 sim 平衡。我正在使用 GsmComm 库、ASP.NET Web 表单、C#。下面是我的代码:

    public string SendUssdRequest2(string request)
    {
        comm = ConnectAndGetComm();
        string data = TextDataConverter.StringTo7Bit(request);

        string msg = "";
        var asPDUencoded = Calc.IntToHex(TextDataConverter.SeptetsToOctetsInt(data));
        try
        {
            IProtocol protocol = comm.GetProtocol();
            string gottenString = protocol.ExecAndReceiveMultiple("AT+CUSD=1," + asPDUencoded + ",15");
            var re = new Regex("\".*?\"");
            int i = 0;
            if (!re.IsMatch(gottenString))
            {
                do
                {
                    protocol.Receive(out gottenString);
                    ++i;
                } while (!(i >= 5
                           || re.IsMatch(gottenString)
                           || gottenString.Contains("\r\nOK")
                           || gottenString.Contains("\r\nERROR")
                           || gottenString.Contains("\r\nDONE"))); 
            }

            string m = re.Match(gottenString).Value.Trim('"');
            return PduParts.Decode7BitText(Calc.HexToInt(m));
        }
        catch(Exception e)
        {
            msg = e.Message;
        }
        finally
        {
            comm.ReleaseProtocol();
        }
        return msg;
    }

我调试并发现调制解调器已连接。在“ExecAndReceiveMultiple”上,我收到错误消息 - 等待 29999 / 30030 毫秒后没有从手机收到数据。代码没问题吗?可能是什么问题呢 ?任何其他建议,如其他库或代码以获得 sim balance 都会有很大帮助。谢谢你。

标签: c#gsmgsmcomm

解决方案


推荐阅读