首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

簡訊編碼原理與 AT 指令詳解:PDU 模式、UCS2 編碼與 GSM 07.05 指令集

     編輯:關於C語言

簡訊編碼發展歷程

依時間順序有三種模式:Block Mode、Text Mode(AT 指令)、PDU Mode(AT 指令)。Text Mode 較簡單,NOKIA 多支援;西門子多僅支援 PDU。PDU 將簡訊內文以十六進位編碼傳送,已取代 Block Mode。本文以西門子 3508 為例說明 PDU 發送。

SMS 規格與編碼長度

依 ETSI 規範(GSM 03.40、03.38):

  • 7-bit 編碼:最多 160 字元
  • 8-bit 編碼:最多 140 字元,通常無法直接顯示
  • 16-bit (UCS2/Unicode):最多 70 字元,可顯示中文等多國語言

本文採 UCS2 編碼,中英皆上限 70 字元。

PDU 封包完整解析範例

發送「你好,Hello!」給 13715342642,簡訊中心號 8613800755000(SIM 卡歸屬地決定,非當前所在地)。

編碼後 PDU 字串:

0891683108705500F011000D91683117352446F2000800124F60597DFF0C00480065006C006C006F0021

欄位逐項解析

PDU 片段含義實際值/說明
08簡訊中心號長度含 91 + 號碼
91TON/NPI 類型International/E.164,號碼前需加 +
683108705500F0簡訊中心號(位移後)實際 8613800731500,F 表長度-1
11檔頭位元組固定
00TP-Message-Reference訊息參考號
0D被叫號碼長度13 位元組
91被叫號碼類型International
683117352446F2被叫號碼(位移後)實際 8613715342642
00TP-PID 協定識別通常 00
08TP-DCS 資料編碼UCS2 (16-bit)
00TP-VP 有效期相對格式
12TP-UDL 使用者資料長度18 位元組 → 0x12
4F60597DFF0C00480065006C006C006F0021簡訊內容"你好,Hello!" UCS2 編碼

程式實作請參考隨附 PDUdecoding.cs。

GSM 07.05 簡訊相關 AT 指令表

指令功能
AT+CMGC發送簡訊命令
AT+CMGD刪除 SIM 簡訊
AT+CMGF選擇格式:0=PDU, 1=Text
AT+CMGL列出簡訊(未讀/已讀/待發/已發/全部)
AT+CMGR讀取簡訊
AT+CMGS發送簡訊
AT+CMGW寫入待發簡訊至記憶體
AT+CMSS從記憶體發送
AT+CNMI新簡訊指示
AT+CPMS選擇儲存體
AT+CSCA設定/查詢簡訊中心號
AT+CSCB選擇小區廣播
AT+CSMP設定 Text 模式參數
AT+CSMS選擇簡訊服務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved