2012-07-22 78 views
1

在C#项目,华为E1550调制解调器工作发送使用+ CUSD命令PDU GSM 7位编码

USSD代码了大量的研究后,尝试和错误我发现,我应该向使用“GSM 7位”编码的命令

我在网上找到转换器,做到这一点:http://smstools3.kekekasvi.com/topic.php?id=288

,所以我搜索找到类/算法使用C#来实现它,我觉得这一点:https://sites.google.com/site/freesmsuk/gsm7-encoding

的问题是,如果我编码一个CHARAC之三只有它正确编码为“1” - >“31”

但是当我编码字符串“*#888”的在线转换器产生“2A1C0E3702”,而类生成“2A38383823”

和调制解调器处理在线编码不是类

算法有什么问题?在此先感谢

回答

1

如果我尝试将其转换,我得到“2A1C0E3702”

Hex   2A   1C   0E   37   02  +++++++ 
Octets  00101010 00011100 00001110 00110111 00000010  
Septets  0101010  0111000  0111000  0111000  0100011 +++++++ 
Character *   8   8   8   # 

这是七位字母。间距纯粹是为了可读性。

SEVEN_BIT_ALPHABET_ARRAY = (
'@', '£', '$', '¥', 'è', 'é', 'ù', 'ì', 'ò', 'Ç', '\n', 'Ø', 'ø', '\r','Å', 'å', 
'\u0394', '_', '\u03a6', '\u0393', '\u039b', '\u03a9', '\u03a0','\u03a8', '\u03a3', '\u0398', '\u039e', 
'€', 'Æ', 'æ', 'ß', 'É', ' ', '!', '"', '#', '¤', '%', '&', '\'', '(', ')','*', '+', ',', '-', '.', '/', 
'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 
':', ';', '<', '=', '>', '?', '¡', 
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 
'Ä',                 'Ö', 
                   'Ñ',        'Ü', '§', 
         '¿', 
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 
'ä',                 'ö', 
                   'ñ',        'ü', 
'à') 

我用计算器http://rednaxela.net/pdu.php来转换这些。

看起来它可能是一个字符编码问题。确保您要转换的字符是ASCII,而不是Unicode。

最后,你确定你需要PDU编码你的USSD吗?大多数调制解调器将

AT+CUSD=1,"*888#",15 
+0

感谢您的答复它真的帮助我的工作也同时使用:http://mobileforensics.files.wordpress.com/2007/06/understanding_sms.pdf和HTTP://www.dreamfabric .com/sms/hello.html来了解如何一步一步编码/解码。问题不是ASCII和unicode问题是从septets转换为八位组,并且是的,我尝试使用纯文本,它不工作,导致调制解调器不支持它 – HokaHelal 2012-07-26 03:01:50