GsmComm USSD命令

cry*_*ted 1 c# gsm ussd

我一直在使用scampers库通过GSM调制解调器发送和接收短信.它几乎按我想要的方式工作.但我遇到的问题是我不能发出像*101#或类似的命令,经过一些研究后我发现这些命令叫做USSD命令.所以我的问题是,是否有人能够通过Scampers库发出USSD命令.

lin*_*rro 6

USSD是一种与SMS不同的协议,因此您无法使用以SMS为中心的库来发送USMD消息.这就像尝试从ftp客户端库发送http请求一样.


小智 6

这对我使用 GsmComm 来说非常有效:

    public string SendUssdRequest(string request)
    {
        string data = TextDataConverter.StringTo7Bit(request);

        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"))); //additional tests "just in case"
            }
            string m = re.Match(gottenString).Value.Trim('"');
            return PduParts.Decode7BitText(Calc.HexToInt(m));
        }
        catch { }
        finally
        {
            _comm.ReleaseProtocol();
        }
        return "";
    }
Run Code Online (Sandbox Code Playgroud)