我在Hyperterminal中测试了一些基本的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
命令应显示
这样的事情。但它显示了十六进制代码,它不可读。我怎样才能获得纯文本?任何人都可以帮助我吗?
答案 0 :(得分:1)
根据提供的信息判断。当您使用15的DCS(数据编码方案)发送+ CUSD请求时,以及来自Bkash服务的DCS为72的响应。看起来您的调制解调器不支持来自Bkash的DCS中指定的编码。
我发现这个question是一个非常相似的问题和解决方案。尝试并确保将+ CSCS设置为类似IRA或GSM的内容,然后查看您的+ CUSD响应后会发生什么。
答案 1 :(得分: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()
答案 2 :(得分:0)
嗨此代码称为PDU(协议数据单元)。解码它并不是直截了当的。你需要先了解结构。