我正在開發一個類似於支持PDU格式(使用android手機)發送消息的消息服務器。我已經使用在線編碼器來轉換我的文本,但我不知道將文本轉換爲PDU格式的真實步驟,我不認爲它只是一個十六進制數字。將文本轉換爲PDU格式
我用於從超級終端發送消息的命令。
有人可以幫忙嗎?
我用AT-命令:
at
at+cmgf=0
at+cmgs=25 (Length i guess)
>"encoded message"
我正在開發一個類似於支持PDU格式(使用android手機)發送消息的消息服務器。我已經使用在線編碼器來轉換我的文本,但我不知道將文本轉換爲PDU格式的真實步驟,我不認爲它只是一個十六進制數字。將文本轉換爲PDU格式
我用於從超級終端發送消息的命令。
有人可以幫忙嗎?
我用AT-命令:
at
at+cmgf=0
at+cmgs=25 (Length i guess)
>"encoded message"
的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的標準,通常是一個低質量的指標詳細/技術術語引用。
再一次,看好質量好難。
我得到了轉換的代碼...但thanx很多,你給我太多研究.. :) –