編碼一個SMS通常須要以下的信息:編碼
TP_Data_Coding_SchemeTP_UD編碼方式spa
TP_Destination_Address對方號碼設計
TP_Message_Reference參考號碼code
TP_Status_Report_Request狀態報告it
TP_User_Data用戶信息io
TP_Validity_Priod有效期變量
ServiceCenterNumber短信中心號碼數據
因此在編碼器中存在以上的屬性,並在Set中加入了處理代碼,將可讀信息轉換成對應的十六進制信息。英文
特 別注意的是TP_User_Data屬性,它能夠根據用戶數據編碼自動設置TP_UDL。對於純英文編碼,TP_UDL爲全部的字符數;對於 Unicode編碼,因爲一個字符由兩個字節表示,TP_UDL爲全部的字符數*2。注意檢查TP_User_Data的長度,對於SMS來講編碼後的 TP_UD長度不能超過140字節。也就是說英文160個字符(140/7*8),中文70個字符。di
對於TP_UD的編碼在解碼器中也有說明,在此再也不贅述。
我還設計了幾個枚舉變量:
ENUM_TP_DCS編碼方式
ENUM_TP_SRI狀態報告
ENUM_TP_VALID_PERIOD有效期
ENUM_TP_VPF有效期格式
這些枚舉變量能夠簡化輸入,也利於往後擴充。
當以上內容設置好之後,基本上一個短信的架子就出來了。此時調用GetSMSPDUCode進行組合,簡單的把十六進制拼接起來就造成了一個完整的PDU代碼。
轉自bbs.sendsms.cn