1. 程式人生 > >CMPP3.0實現物聯網絡卡發簡訊遇到的問題

CMPP3.0實現物聯網絡卡發簡訊遇到的問題

當下物聯網發展迅猛,物聯網絡卡可以接受簡訊指令,實現千里之外儘可掌控。本人做過一個這類專案,把相關經驗記錄下來,分享給需要的人。
物聯網絡卡通訊其實跟電話卡一樣,可以使用CMPP協議。不過由於物聯網絡卡位數為13位,未測試CMPP2.0是否支援,直接保險一點用的CMPP3.0協議。

因為CMPP3.0中號碼欄位增加到32位,還增加了號碼型別欄位,可能是為了擴充套件不同型別的卡。

Dest_terminal_Id 32*DestUsr_tl Octet String 接收簡訊的MSISDN號碼
Dest_terminal_type 1 Unsigned Integer 接收簡訊的使用者的號碼型別,0:真實號碼;1:偽碼。

關於編碼格式,一開始嘗試了5種常用的編碼,簡訊接收到中文還是亂碼,解決方法如下:

*目前物聯網絡卡通訊,如果是英文內容,則只支援Ascii碼,也就是Msg_Fmt必須設定成0
如果是傳送中文內容,則只支援UCS2編碼,即Msg_Fmt必須設定成8
另外有個特別費解的問題是,如果是發中文內容,簡訊閘道器會自動在簡訊後面加上一串尾巴,類似【ayf】等。這個問題在開發的時候必須注意,以免傳送的指令不能解析,需要做一些邏輯處理把尾巴去掉。*

關於號碼選擇型別:
物聯網的使用者號碼型別選擇Dest_terminal_type=0即可。若選擇1會報錯。

其他:
如遇到簡訊閘道器返回碼,可查詢以下網址看返回碼解釋

常見返回碼:173 是物聯網絡卡沒開通簡訊功能造成的。