物聯網通訊與普通短信通訊的區別和要註意的地方
CMPP3.0中號碼字段增加到32位,還增加了號碼類型字段,可能是為了擴展不同類型的卡。
Dest_terminal_Id |
32*DestUsr_tl |
Octet String |
接收短信的MSISDN號碼。 |
Dest_terminal_type |
1 |
Unsigned Integer |
接收短信的用戶的號碼類型,0:真實號碼;1:偽碼。 |
可是用CMPP3.0協議,也就是說發送短信到物聯網卡、從物聯網卡回復短信回來,都可以直接用這套CMPP3.0協議。那麽跟發手機短信有何不同之處呢,以下就是幾點不同:
1.關於編碼格式
目前物聯網卡通訊,如果是英文內容,則只支持Ascii碼,也就是Msg_Fmt必須設置成0
Msg_Fmt |
1 |
Unsigned Integer |
信息格式: 0:ASCII串; 3:短信寫卡操作; 4:二進制信息; 8:UCS2編碼; 15:含GB漢字。。。。。。 |
如果是發送中文內容,則只支持UCS2編碼,即Msg_Fmt必須設置成8
另外有個特別費解的問題是,如果是發中文內容,短信網關會自動在短信後面加上一串尾巴,類似【ayf】等。這個問題在開發的時候必須註意,以免發送的指令不能解析,需要做一些邏輯處理把尾巴去掉。
2.關於長短信
我們知道一條短信只能發140個字節的內容,如果實際要發的內容超過這個數,就必須拆成多條發送,這樣會有一些影響。為了發長短信,我們的CMPP發送程序必須做一些改造,具體請參考我的另一篇博文CMPP3.0 長短信實現方案
而對於物聯網卡來說,收發長短信必須使用 7 位的協議頭格式:06 08 04 XX XX MM NN
這也是要註意的一點,否則解析發送都會出錯。
3.關於用戶號碼類型
物聯網的用戶號碼類型選擇Dest_terminal_type=0即可。若選擇1會報錯。
其他
如遇到短信網關返回碼,可查詢以下網址看返回碼解釋
http://www.cnblogs.com/tuyile006/p/5849722.html
常見返回碼:173 是物聯網卡沒開通短信功能造成的。
這就是開發物聯網通訊過程中的經驗。
提綱 1 物聯網數據卡系統源碼——前篇 1.1 物聯網技術架構圖 1.2 物聯網的主要應用領域 2 物聯網數據卡系統源碼——通信模塊 2.1 通信模塊整體概述 2.2 協議封裝和實現 2.3 長短信 2.4 粘包的處理 2.5 物聯網通訊與普通短信通訊的區別和要註意的地方 3 物聯網數據卡系統源碼——Windows服務模塊 3.1 Windows服務模塊概述 3.2 Windows服務模塊實現 3.3 高並發回調處理 3.4 部署安裝 |
物聯網通訊與普通短信通訊的區別和要註意的地方