2015-10-21 116 views
1

我正在開發一個類似於支持PDU格式(使用android手機)發送消息的消息服務器。我已經使用在線編碼器來轉換我的文本,但我不知道將文本轉換爲PDU格式的真實步驟,我不認爲它只是一個十六進制數字。將文本轉換爲PDU格式

我用於從超級終端發送消息的命令。

有人可以幫忙嗎?

我用AT-命令:

at 
    at+cmgf=0 
    at+cmgs=25 (Length i guess) 
    >"encoded message" 

回答

1

AT+CMGS命令在3GPP 25.005 standard限定,並且對於PDU模式它的語法被給定爲

+CMGS=<length><CR> 
PDU is given<ctrl-Z/ESC> 

和說明書中被進一步指定

該PDU應爲十六進制格式(類似於<pdu>) 並且在一行中給出; ME/TA將此編碼轉換爲實際的PDU的 八位位組。

<pdu>格式在消息數據參數在3.1章參數定義來定義:

在SMS的情況下:3GPP TS 24.011 [6] SC地址隨後 3GPP TS 23.040 [ 3] TPDU十六進制格式:ME/TA將TP數據單元的每個 八位組轉換爲兩個IRA字符長十六進制數 (例如,整數值爲42的八位組作爲兩個字符呈現給TE 2A(IRA 50和65))

(SC短的服務中心

而這裏所有的樂趣開始,因爲你現在必須真正深入,真的,真的深入到那些其他規格揭開實際格式...


例如,24.011描述了在移動臺和網絡之間發送的消息的低級數據格式,其中只有部分消息在這種情況下是相關的。

7.3.1.2 RP-DATA(移動臺到網絡)該消息以MS-> MSC方向發送。該消息用於中繼TPDU。信息元素符合3GPP TS 23.040。

並且在給出的表格中,最後兩行是相關部分,服務中心地址和TPDU。

Information element, Reference, Presence, Format, Length 
RP‑Message Type, Subclause 8.2.2, M, V, 3 bits 
RP‑Message Reference, Subclause 8.2.3, M, V, 1 octet 
RP‑Originator Address, Subclause 8.2.5.1, M, LV, 1 octet 
RP‑Destination Address, Subclause 8.2.5.2, M, LV, 1‑12 octets 
RP‑User Data, Subclause 8.2.5.3, M, LV, <= 233 octets 

試圖挖掘進一步我就死在試圖找出了RP-目的地址數IEI的價值,我已經花了很長時間寫這個答案。很抱歉在這裏停留。實際的電話號碼編碼是「正常的」被叫方BCD號碼編碼(24.4中的10.5.4.7)。008),TON + NPI與AT+CPBW中的<type>參數相同。與文本的編碼就可以了原委自己...


試圖破譯3GPP規範的部分,有時可真苦和誤解的可能性可能是接近無窮!如果你確實開發自己的代碼來做這件事,你可能會開始閱讀好的PDU模式介紹,比如 http://mobiletidings.com/2009/02/11/more-on-the-sms-pdu/ 。 或者在處理PDU模式的已有庫/程序中查找代碼。

請注意,這樣的好文章質量都遠遠之間,如果文本不包括從3GPP的標準,通常是一個低質量的指標詳細/技術術語引用。

再一次,看好質量好難。

+0

我得到了轉換的代碼...但thanx很多,你給我太多研究.. :) –