2015-05-04 136 views
2

我發送AT + CUSD命令(撥打ussd代碼)到gsm調制解調器。它工作正常。手機上的響應也是正確的。但反應是,我認爲十六進制格式或編碼的一些未知的對我說:AT + CUSD命令:響應編碼

GSM調制解調器硬件:

諾基亞C6-01

使用USB電纜連接到筆記本電腦。 USB模式:諾基亞套件

命令初始化編碼:

AT+CSCS=? 

+CSCS: ("UCS2","GSM","PCCP437","PCDN","IRA","8859-1","HEX","UTF-8") 

AT+CSCS="IRA" 

AT+CSCS? 

+CSCS: "IRA" 

也試過:

AT+CSCS="GSM" 
AT+CSCS="UTF-8" 

實際USSD命令:

AT+CUSD=1,"*123#",15 

實際響應:

+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1 

OK 

預期的響應:

AT+CUSD=1,"*123#",15 

+CUSD: 1,"Dear Customer.... some response in english",1 
+0

+ CUSD響應的結尾以「,1」結尾是否正確?或者事實上以「,15」結尾? – aldridmc

+0

@aldridmc在響應中,它以1結尾。它是正確的,而不是拼寫錯誤。 –

+0

這使先生有什麼不同? –

回答

2

看起來像一個調制解調器的解碼問題。應該通過使用大多數調制解調器的標準IRA編碼來解決。

嘗試使用:

AT + CSCS = 「愛爾蘭共和軍」

然後嘗試將USSD命令再次得到迴應。

作爲一個側面說明,您可以輸出可用的編碼通過您的調制解調器的功能:

AT + CSCS =?

USSD被編碼爲7位GSM或UC2。要使用7位解碼,請查看3GPP ETSI 03.38。爲了解碼UC2,這基本上是UTF-16,所以2個字節定義了一個字符。

與7位嘗試:

C4 1 1000100  100 0100  D 
72 01 110010  110 0101  e 
58 010 11000  110 0001  a 
E1 1110 0001  000 1010  <LF> 
AD 10101 101  101 1110  ü 
7E 011111 10  101 0101  U 
7F 0111111 1  101 1111  § 
47 0 1000111  011 1111  ? 
7B 01 111011  100 0111  G 

Dea<LF>üU§?G 

開始了良好的7位,但後3個字符它只是垃圾。

嘗試使用UC2只會產生垃圾。

結論:也許調制解調器正在使用的一個具體問題(仍然會知道它是哪個製造商的型號)。或者你如何連接到調制解調器(考慮到USSD字符串不是有效的十六進制字符串,因爲它的長度不均勻)。

+0

即使設置後也有同樣的響應。 –

+0

你能執行AT + CSCS =嗎?命令並告訴我你回來了什麼?此外,製造商和您的調制解調器的型號將有用 – aldridmc

+0

嘿,先生,我已經添加了所需的命令。請再看看我的問題。 –

0

線程有點舊,但可能會幫助來這裏的人!

格式顯然在十六進制UC2,16位字符!所以你應該把它轉換回可讀的字符串!如果你知道如何編程這是一項簡單的任務!創建你的功能!採取每4個字符!把它們放在$ hex ==>把它們轉換成char!例如在PHP中!你用這樣的兩個函數chr(​​hexdec($ hex))來做到這一點! 很適合沒有節目的人!看看這個頁面online converter

有太多太多的不工作!在所有情況下!這一個很好!比這更好!是你可以保存完成頁面在你的電腦!並在離線時使用它!他們已經在JavaScript中實現了!它包括在內!大!

現在很適合程序員!有一個我在php中創建的函數!我正在做一些事情!用AT命令!在這裏我創建了我自己的功能!可能會幫助你!

here is the file ! couldn't post it as code directly here! some not simple (identation thing!) => it's a doc file on my google drive

希望這是有益的!