範例:發送「你好,Hello!」給 13715342642,簡訊中心號 8613800755000。
完整 PDU 字串:
0891683108705500F011000D91683117352446F2000800124F60597DFF0C00480065006C006C006F0021
| 片段 | 意義 |
|---|---|
| 08 | 簡訊中心號長度(含 91 號碼類型) |
| 91 | TON/NPI:國際格式(E.164,號碼前加 +) |
| 683108705500F0 | 簡訊中心號(實際 8613800755000,F 為長度補位) |
| 11 | PDU 標頭:提交、無狀態報告、無有效期、UCS2 編碼 |
| 00 | TP-MR 訊息參考號 |
| 0D | 接收方號碼長度(13 位) |
| 91 | 接收方號碼類型(國際格式) |
| 683117352446F2 | 接收方號碼(實際 8613715342642) |
| 00 | TP-PID 協定識別碼 |
| 08 | TP-DCS 資料編碼:UCS2 (16-bit) |
| 00 | TP-VP 有效期:無 |
| 12 | TP-UDL 使用者資料長度(18 bytes = 36 十六進位字元) |
| 4F60597DFF0C00480065006C006C006F0021 | 內容「你好,Hello!」UCS2 編碼 |
| 指令 | 功能 |
|---|---|
| AT | 測試連線,回 OK 表示正常 |
| AT+CMGF=0 | 設定 PDU 模式(1=Text) |
| AT+CMGS=33 | 發送 PDU,33 為 PDU 字串長度/2(不含前兩欄位) |
| AT+CMGR=1 | 讀取簡訊 |
| AT+CMGL=4 | 列出所有簡訊 |
| AT+CMGD=1 | 刪除簡訊 |
| AT+CSCA="8613800755000" | 設定簡訊中心號 |
AT 確認連線。AT+CMGF=0 進入 PDU 模式。AT+CMGS=長度,收到 > 提示後送入 PDU 字串,結尾送 Ctrl+Z (0x1A)。OK 表示發送成功。using System.IO.Ports;
SerialPort sp = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
sp.Open();
sp.WriteLine("AT");
Thread.Sleep(500);
sp.WriteLine("AT+CMGF=0");
Thread.Sleep(500);
sp.Write("AT+CMGS=33\r");
Thread.Sleep(500);
sp.Write(pduString + "\x1A"); // Ctrl+Z
Thread.Sleep(3000);
string resp = sp.ReadExisting();
sp.Close();
PDUdecoding.cs)。