2

我正在开发一个 USSD 客户端。除了关闭远程 USSD 会话外,一切正常。

在规范中,我们可以看到函数 CUSD: AT+CUSD=2 应该关闭 USSD 会话,但事实并非如此。

实际上,当我执行此序列时:

AT+CUSD='#xxx#',12
AT+CUSD='1',12

我有一个开放的远程连接。在您的手机上,您可以通过拨打#xxx*#来打开一个新会话

如果我发送:

 AT+CUSD='#xxx*#',12

这不是打开一个新的远程会话。如果我发送:

AT+CUSD=2
AT+CUSD='#xxx#'

这不是打开一个新的远程会话。

你知道如何关闭远程会话吗?我在 Windows 或 Linux 上使用华为密钥 E160 和 E173。

4

2 回答 2

0

按以下方式使用。AT+CUSD='#xxx#',15 AT+CUSD=2

于 2015-01-16T06:25:33.513 回答
0

我发布这个是因为这是关于使用 AT 命令终止 USSD 会话的最佳结果,也因为答案含糊不清。这是我最后使用的 c# 代码(我将命令发送到 gsm 调制解调器)。希望它可以帮助别人

    SerialPort SendingPort=null;

    public string TerminateUssdSession()
    {
            InitializePort();

            //// generate terminate command for modem
            string cmd = "";
            cmd = "AT+CUSD=2\r";

            // send cmd to modem
            OpenPort();

            SendingPort.Write(cmd);

            Thread.Sleep(500);

            string response = SendingPort.ReadExisting();

            return response;

    }

    private void InitializePort()
    {
        if (SendingPort == null)
        {
            SendingPort = new SerialPort();
            SendingPort.PortName = PortName;//put portname here e.g COM5
            SendingPort.BaudRate = "112500";
            SendingPort.Parity = Parity.None;
            SendingPort.DataBits = 8;
            SendingPort.StopBits = StopBits.One;
            SendingPort.Handshake = Handshake.None;
            SendingPort.ReadTimeout = 500;
        }
    }

    private void OpenPort()
    {
        if (!SendingPort.IsOpen)
        {
            SendingPort.Open();
        }
    }
于 2016-12-21T14:11:13.000 回答