3

我在超级终端中测试了一些基本的 AT 命令。GSM 调制解调器也按照我的命令响应。但问题是它向我显示了不可读的文本。我使用以下代码:

AT
OK
AT+CUSD=1,"*247#",15
OK

+CUSD: 1,"0062004B006100730068000A00310020004D0032004D0020005400720061006E007300
6600650072000A0032002000440069007300620075007200730065000A00330020004D0079002000
62004B006100730068000A0034002000480065006C0070006C0069006E0065000A",72
AT+CUSD=1,"1",15
OK

AT+CUSD=1,"*247#",15命令应该显示

  1. 菜单 1
  2. 菜单 2
  3. 菜单 3

类似的东西。但它显示了它不可读的十六进制代码。我怎样才能得到纯文本?谁能帮我 ?

4

3 回答 3

1

使用以下函数解码“UCS2”响应数据:

    public static String HexStr2UnicodeStr(String strHex)
    {
        byte[] ba = Hex2ByteArray(strHex);
        return HexBytes2UnicodeStr(ba);
    }

    public static String HexBytes2UnicodeStr(byte[] ba)
    {
        var strMessage = Encoding.BigEndianUnicode.GetString(ba, 0, ba.Length);
        return strMessage;
    }

例如:

String str2 = SmsEngine.HexStr2UnicodeStr("0062004B006100730068000A00310020004D0032004D0020005400720061006E0073006600650072000A0032002000440069007300620075007200730065000A00330020004D007900200062004B006100730068000A0034002000480065006C0070006C0069006E0065000A");
// str2 = "bKash\n1 M2M Transfer\n2 Disburse\n3 My bKash\n4 Helpline\n"

另请检查UnicodeStr2HexStr()

于 2014-08-06T08:15:44.113 回答
1

从提供的信息来看。当您发送 DCS(数据编码方案)为 15 的 +CUSD 请求时。而 Bkash 服务的响应为 DCS 72。看起来您的调制解调器不支持 Bkash 在 DCS 中指定的编码。

我发现这个问题的问题和解决方案非常相似。尝试并确保将 +CSCS 设置为 IRA 或 GS​​M 之类的内容,然后查看您的 +CUSD 响应会发生什么。

于 2014-06-16T17:19:33.847 回答
0

您好,此代码称为 PDU(协议数据单元)。解码它不是直截了当的。你需要先了解结构。

于 2015-01-04T21:23:58.333 回答