?? smssend.txt
字號(hào):
GF-1000 GSM MODEM短信收發(fā)例子程序 - 我的地盤 - 網(wǎng)易博客 關(guān)閉 網(wǎng)易博客| 空間服務(wù)| 搜 索
日志相片音樂標(biāo)簽作者日志相片音樂標(biāo)簽作者登錄| 注冊(cè)| 我的地盤
風(fēng)箏有風(fēng),海豚有海,我存在我的存在! 首頁 日志 相冊(cè) 音樂 收藏 好友 關(guān)于我 日志
西門子TC35T用戶說明書2SMS短消息PDU編碼與解碼詳細(xì)信息
字號(hào): 大大 中中 小小 GF-1000 GSM MODEM短信收發(fā)例子程序1.短信控制終端
GF-1000 GSM
MODEM,模塊采用西門子公司的TC35i,它由GSM基帶處理器、電源專用集成電路、射頻電路和閃速存儲(chǔ)器等部分組成,負(fù)責(zé)處理GSM蜂窩設(shè)備中的音頻、數(shù)據(jù)和信號(hào),內(nèi)嵌的軟件部分執(zhí)行應(yīng)用接口和所有GSM協(xié)議棧的功能。TC35支持中文短信息,工作在EGSM900和GSM1800雙頻段,電源范圍為3.3~5.5V,可傳輸語音和數(shù)據(jù)信號(hào),消耗功率在EGSM900(4類)和GSM1800(1類)分別為2W和1W,通過接口連接器和天線連接器分別連接SIM卡讀卡器和天線。TC35的數(shù)據(jù)接口(CMOS電平)通過AT命令可雙向傳輸指令和數(shù)據(jù),可選波特率為300bit/s~115kbit/s,自動(dòng)波特率為1.2k~115kbit/s。它支持文本和移動(dòng)運(yùn)營商提供。
設(shè)置短消息中心號(hào)碼的指令格式為:
AT+CSCA=+8613800531500
//注釋(短消息中心號(hào)碼) 是回車符號(hào) , 是回車換行符號(hào)。
設(shè)置正確則模塊返回OK。
(3)讀取短消息服務(wù)中心則使用命令:
讀取短消息服務(wù)中心號(hào)碼的命令格式:
AT+CSCA=?
//注釋是回車符號(hào)
指令正確TC35i模塊應(yīng)該返回:
+CSCA:″8613800531500″。
(4)設(shè)置短消息到達(dá)自動(dòng)提示
設(shè)置短消息到達(dá)自動(dòng)提示的指令格式為:
AT+CNMI=1,1,0,0,1
設(shè)置正確則TC35i模塊返回:
OK。
設(shè)置此命令可使模塊在短消息到達(dá)后向串口發(fā)送指令:
+CMTI:″SM″,INDEX(信息存儲(chǔ)位置)。
通過TC35i發(fā)送短消息的方法為:
PC上的控制軟件按照PDU的格式發(fā)送和接收數(shù)據(jù),短消息的內(nèi)容可以是中文或者其他字符。在PDU模式,如果發(fā)送短消息,則首先發(fā)送短消息數(shù)據(jù)的長度:
(5)發(fā)送短消息數(shù)據(jù)的長度命令格式:
AT+CMGS=(先得用AT+CMGF?去查看當(dāng)前的數(shù)據(jù)發(fā)送格式是否為PDU,即CMGF =0,若不為0,這需要重新設(shè)置CMGF=0)
等待TC35i模塊返回ASCII字符">",則可以將PDU數(shù)據(jù)輸入,PDU數(shù)據(jù)以按鍵(也就是0x1a)作為結(jié)束符。
短消息發(fā)送成功,模塊返回:
OK
(6)通過TC35i接收短消息的方法為:
短消息到來后,串口上會(huì)接收到指令
+CMTI:″SM″,INDEX(信息存儲(chǔ)位置)
(7)PC上的控制軟件通過讀取PDU數(shù)據(jù)的AT命令格式:
AT+CMGR=INDEX //注釋是回車符號(hào)
//注釋:將TC35模塊中PDU格式的在存儲(chǔ)位置為INDEX上的短消息內(nèi)容讀出上面的命只讀位置為INDEX的短消息
AT+CMGL
//注釋:上面的命令一次性讀出全部的短消息
將TC35模塊中PDU格式的在存儲(chǔ)位置為INDEX上的短消息內(nèi)容讀出。如果用+CMGL代替+CMGR,則可一次性讀出全部短消息,命令格式如下:
AT +CMGL //注釋是回車符號(hào)
(8)通過TC35i刪除短消息的方法為:
PC上的控制軟件收到一條短消息并處理后,需要將其在SIM卡上刪除,以防止SIM卡飽和。刪除短消息的指令為:
AT+CMGD=INDEX
刪除后模塊返回:
OK
2.程序?qū)嵗? 由于本文的宗旨在于講解串口通信,因此,我們屏蔽圖形用戶界面的細(xì)節(jié),制作一個(gè)簡單的短信收發(fā)軟件,它包含了控制短信終端的所有串口通信內(nèi)容。
關(guān)于界面上控件的描述如下:
BEGIN
EDITTEXT IDC_SMSCONTENT_EDIT,39,61,242,38,ES_AUTOHSCROLL
PUSHBUTTON "發(fā)送",IDC_SEND_BUTTON,316,80,45,18
GROUPBOX "接收短消息",IDC_STATIC,28,124,361,167
LTEXT "對(duì)方手機(jī)號(hào)",IDC_STATIC,41,35,42,11
EDITTEXT IDC_PHONENUM_EDIT,88,30,192,17,ES_AUTOHSCROLL
PUSHBUTTON "清除",IDC_CLEAR_BUTTON,316,30,45,18
GROUPBOX "發(fā)送短消息",IDC_STATIC,29,19,361,95
LISTBOX IDC_RECVSMS_LIST,43,137,331,127,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "接收",IDC_RECV_BUTTON,77,269,55,16
PUSHBUTTON "清空",IDC_DELETEALL_BUTTON,273,268,45,14
END
對(duì)話框類的消息映射為:
BEGIN_MESSAGE_MAP(CSMSControlDlg, CDialog)
//{{AFX_MSG_MAP(CSMSControlDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CLEAR_BUTTON, OnClearButton)
ON_BN_CLICKED(IDC_SEND_BUTTON, OnSendButton)
ON_BN_CLICKED(IDC_RECV_BUTTON, OnRecvButton)
ON_BN_CLICKED(IDC_DELETEALL_BUTTON, OnDeleteallButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
下面是對(duì)本例程軟件的主要數(shù)據(jù)結(jié)構(gòu)和核心函數(shù)的介紹:
數(shù)據(jù)結(jié)構(gòu)
// 用戶信息編碼方式
#define GSM_7BIT 0
#define GSM_8BIT 4
#define GSM_UCS2 8
// 短消息參數(shù)結(jié)構(gòu),編碼/解碼共用
// 其中,字符串以0結(jié)尾
typedef struct
{
char SCA[16]; // 短消息服務(wù)中心號(hào)碼(SMSC地址)
char TPA[16]; // 目標(biāo)號(hào)碼或回復(fù)號(hào)碼(TP-DA或TP-RA)
char TP_PID; // 用戶信息協(xié)議標(biāo)識(shí)(TP-PID)
char TP_DCS; // 用戶信息編碼方式(TP-DCS)
char TP_SCTS[16]; // 服務(wù)時(shí)間戳字符串(TP_SCTS), 接收時(shí)用到
char TP_UD[161]; // 原始用戶信息(編碼前或解碼后的TP-UD)
char index; // 短消息序號(hào),在讀取時(shí)用到
} SM_PARAM;
發(fā)送短消息
發(fā)送按鈕對(duì)應(yīng)的函數(shù)為CSMSControlDlg::OnSendButton,它讀取用戶輸出并根據(jù)目標(biāo)電話號(hào)碼和短信息內(nèi)容形成SM_PARAM(源PDU參數(shù))的內(nèi)容,接著進(jìn)行發(fā)送:
void CSMSControlDlg::OnSendButton()
{
// TODO: Add your control notification handler code here
//獲得用戶輸入
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -