利用GSM模块SIM100开发短信收发系统.docx
- 文档编号:25501417
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:9
- 大小:78.55KB
利用GSM模块SIM100开发短信收发系统.docx
《利用GSM模块SIM100开发短信收发系统.docx》由会员分享,可在线阅读,更多相关《利用GSM模块SIM100开发短信收发系统.docx(9页珍藏版)》请在冰豆网上搜索。
利用GSM模块SIM100开发短信收发系统
利用GSM模块SIM100开发短信收发系统
利用GSM模块SIM100开发短信收发系统
利用GSM模块SIM100开发短信收发系统
一.引言
在开发远程通讯控制系统时,利用现有的GSM网络是一个很不错的选择。
这里利用PC串口控制GSM SIM100模块进行收发短消息来实现远程通讯。
二.SIM100通讯协议
1.COM1或COM2 以 9600,N,8,1格式通讯
2.DTR和RTS须置有效。
3.打开监控软件后,须对TE(terminal equipment)初始化。
AT CR(0x0d),LF(0x0a)反馈:
xxOKxx
ATE0 CR(0x0d),LF(0x0a)反馈:
xxOKxx
ATS0=0 CR(0x0d),LF(0x0a)反馈:
xxOKxx
AT+COPS?
(0x0d),LF(0x0a)反馈:
中查到"CHINA MOBILE"
m_MSComm.SetDTREnable(true);
pFrame->m_wndStatusBar.SetPaneText(2,strCOM+":
没有打开!
"
;
if(!
m_MSComm.GetPortOpen())
{
m_MSComm.SetPortOpen(true);
m_bPortOpen=true;
pFrame->m_wndStatusBar.SetPaneText(2,strCOM+":
已就绪!
"
;
}
}
2.读缓冲区长度
short CMainInfoView:
:
GetBufferSize(void)
{
return m_MSComm.GetInBufferCount();
}
3.读缓冲区内容
CString CMainInfoView:
:
GetBufferString(void)
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
variant_inp=m_MSComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k { safearray_inp.GetElement(&k,rxdata+k); } CString strTmp,strRecv; for(k=0;k { BYTE bt=*(char*)(rxdata+k); strTmp.Format("%c",bt); strRecv+=strTmp; } return strRecv; } 4.发送短消息 bool CMainInfoView: : SendShortMessage(CString strNum, CString strMsg) { int i,j; CString strReceive; char ch1[10]={0x0d,0x0a,0x00}; CString strNumCR=CString(ch1); char ch2[10]={0x1a,0x0d,0x0a,0x00}; CString strMsgCR=CString(ch2); CString strSend; strSend="AT+CMGS=\""+strNum+"\""+strNumCR; m_MSComm.GetInput(); m_MSComm.SetOutput(COleVariant(strSend)); Sleep(100); for(i=0;i<10;i++) { Sleep(100); if(GetBufferSize()>0) { Sleep(100); strReceive=GetBufferString(); if(-1! =strReceive.Find('>')) { strSend=strMsg+strMsgCR; m_MSComm.GetInput(); m_MSComm.SetOutput(COleVariant(strSend)); Sleep(500); for(j=0;j<50;j++) { Sleep(100); if(GetBufferSize()>=2) { Sleep(200); strReceive=GetBufferString(); if(-1! =strReceive.Find("OK" ) { //"发送短消息成功! " return true; } else { break; } } else { continue; } } //发送短消息失败: 没有OK" return false; } else { break; } } else { continue; } } //"发送短消息失败: 没有>" return false; } 5.阅读短消息 bool CMainInfoView: : ReadShortMessage(CString& strReceived, int nLocation) { if(nLocation<0||nLocation>9) { MessageBox("Error: ReadShortMessage: nLocation error! " ; return false; } CMainFrame*pFrame=(CMainFrame*)AfxGetMainWnd(); char chCMGR[20]={'A','T','+','C','M','G','R','=','0',0x0d,0x0a,0x00}; CString strTemp; chCMGR[8]='0'+nLocation; CString strSend=CString(chCMGR); m_MSComm.GetInput(); m_MSComm.SetOutput(COleVariant(strSend)); Sleep(400); for(int i=0;i<20;i++) { Sleep(100); if(GetBufferSize()>=2) { Sleep(500); strReceived=GetBufferString(); if(-1! =strReceived.Find("CMGR" && -1! =strReceived.Find("OK" { //"读短消息成功! " } else { //"读短消息失败: 空信息! " } return true; } } //"读短消息失败: 没有回应! " return false; } 6.删除 bool CMainInfoView: eleteShortMessage(int nLocation) { if(nLocation<0||nLocation>9) { MessageBox("Error: ReadShortMessage: nLocation error! " ; return false; } char chCMGD[20]={'A','T','+','C','M','G','D','=','0',0x0d,0x0a,0x00}; CString strReceive; chCMGD[8]='0'+nLocation; CStringstrSend=CString(chCMGD); m_MSComm.SetOutput(COleVariant(strSend)); Sleep(100); for(int i=0;i<20;i++) { Sleep(100); if(GetBufferSize()>=2) { Sleep(100); strReceive=GetBufferString(); if(-1! =strReceive.Find("OK" ) { //"删除短消息: OK" } else { //"删除短消息: ERROR 321! " } return true; } continue; } //"删除短消息: 超时! " return false; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 GSM 模块 SIM100 开发 短信 收发 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)