德国西门子工业GSM模块TC35i 发短信上位机和详细资料 加开发

zhaojun_xf   2010-7-23 10:02 楼主
1.JPG
我的博客

回复评论 (21)

谢谢分享,看来 zhaojun_xf最近都在找短信方面的资料哈
点赞  2010-7-24 21:43
是的,一种一种找,不过大家有的,能共享就好了。
我的博客
点赞  2010-7-25 06:14

可以先找到可用的短信模块,一般都是串口的。然后学习一下短信模块的命令就可以用了。

我以前是直接接到PC上用的。

[ 本帖最后由 zhdphao 于 2010-7-25 08:10 编辑 ]
点赞  2010-7-25 08:06
这是我以前写的短信程序,VC++的,简单改动一下MCU应该没问题。
int CChangefiberDlg::sendmessage(int cmd,char *message,char *telephone)
{        //cmd=0,短信发送;=1,得中心号码;
        try
        {
                if (cmd==0)
                {
                        if (centertype<=2)
                        {        //如果centertype为零说明还没有初始化短信猫,为1说明正在初始化短信猫
                                //为2说明无法无法找到短消息中心!
                                return -1;
                        }

                        //获得短消息中心号码头
                        char tmpchar[640];
                        strcpy(tmpchar,"08");
                        itoa(centertype,tmpchar+strlen(tmpchar),16);
                        if (*messagecenter=='+')
                        {
                                strcpy(messagecenter,messagecenter+1);
                        }
                        int tmpint = gsmInvertNumbers(messagecenter,tmpchar+strlen(tmpchar),strlen(messagecenter));
                        int touchang=strlen(tmpchar);
                        strcpy(tmpchar+strlen(tmpchar),"11000d91");

                        char ttmp[32];
                        if (strlen(telephone)<13)
                        {
                                strcpy(ttmp,"86");
                                strcpy(ttmp+strlen(ttmp),telephone);
                               
                                strcpy(telephone,ttmp);
                        }
                       
                        gsmInvertNumbers(telephone,tmpchar+strlen(tmpchar),strlen(telephone));
                        strcpy(tmpchar+strlen(tmpchar),"000800");

                        CString neirong=message;
                        BSTR bstr1=neirong.AllocSysString();

                        //char my[64];
                        char *p=(char*)bstr1;
                        int nLen = SysStringLen(bstr1);
                        if (nLen*2<16)
                                        strcpy(tmpchar+strlen(tmpchar),"0");
                        itoa(nLen*2,tmpchar+strlen(tmpchar),16);
                        for (int i=0;i                         {
                                if ((BYTE)*(p+i*2+1)<16)
                                        strcpy(tmpchar+strlen(tmpchar),"0");
                                itoa((BYTE)*(p+i*2+1),tmpchar+strlen(tmpchar),16);
                                if ((BYTE)*(p+i*2)<16)
                                        strcpy(tmpchar+strlen(tmpchar),"0");
                                itoa((BYTE)*(p+i*2),tmpchar+strlen(tmpchar),16);
                        }
                        *(tmpchar+strlen(tmpchar)+1)=0;
                        *(tmpchar+strlen(tmpchar))=0x1a;

                        //int nlene=WideCharToMultiByte(CP_ACP,0,bstr1,nLen,NULL,NULL,NULL,NULL);
                        //memcpy(my,p,nLen*2);
                        //FreeSysString(bstr1);
                        SysFreeString(bstr1);
                        int pdulength=strlen(tmpchar)-1-touchang;

                        char tmppdu[512];
                        strcpy(tmppdu,tmpchar);

                        CString aaa="";
                        m_com.SetPortOpen(TRUE);
                        //m_com.SetSettings("9600,n,8,1");
                        VARIANT rcv;
                        rcv.vt = VT_BSTR;
                        strcpy(tmpchar,"AT+CMGS=");
                        itoa(pdulength/2,tmpchar+strlen(tmpchar),10);
                        strcpy(tmpchar+strlen(tmpchar),"\r");
                        aaa=tmpchar;
                        rcv.bstrVal = aaa.AllocSysString(); //,strlen(tmpchar));
                        //SysAllocStringByteLen("set pointer error",18);
                        m_com.SetOutput(rcv);

                        tmpint=0;
                        while (aaa.Find(">")<0 && tmpint<50)
                        {
                                Sleep(20);
                                rcv = m_com.GetInput();
                                aaa = aaa + CString(rcv.bstrVal);
                                tmpint++;
                        }
                        aaa=tmppdu;
                        rcv.bstrVal = aaa.AllocSysString();
                        m_com.SetOutput(rcv);

                        tmpint=0;
                        while (aaa.Find("OK")<0 && aaa.Find("ERROR")<0 && tmpint<200)
                        {
                                Sleep(20);
                                rcv = m_com.GetInput();
                                aaa = aaa + CString(rcv.bstrVal);
                                tmpint++;
                        }
                        if (aaa.Find("OK")>0)
                        {
                                strcpy(tmpchar,"短信发送成功");
                                m_msgstatus.SetWindowText(tmpchar);
                        }
                        else
                        {
                                strcpy(tmpchar,"短信发送失败");
                                m_msgstatus.SetWindowText(tmpchar);
                        }

                       
                        m_com.SetPortOpen(FALSE);
                        return 0;
                }
                else if (cmd==1)
                {
                        int tmpint=0;
                        CString aaa="";
                        m_com.SetPortOpen(TRUE);
                        m_com.SetSettings("9600,n,8,1");
                        VARIANT rcv;
                        rcv.vt = VT_BSTR;
                        rcv.bstrVal  =  ::SysAllocString(L"AT+CSCA?\r");
                        m_com.SetOutput(rcv);
                        //Sleep(1000);
                        while (aaa.Find("OK")<0 && aaa.Find("ERROR")<0 && tmpint<50)
                        {
                                Sleep(20);
                                rcv = m_com.GetInput();
                                aaa = aaa + CString(rcv.bstrVal);
                                tmpint++;
                        }


                        //rcv.vt
                        int a=aaa.Find("+CSCA: \"");
                        char aaaa[640];
                        strcpy(aaaa,aaa);
                        if (a>=0)
                        {
                                strcpy(aaaa,aaaa+a+8);
                                aaa=aaaa;
                                a=aaa.Find("\",");
                                aaaa[a]=0;
                                //已找到短消息中心
                                strcpy(messagecenter,aaaa);
                                strcpy(aaaa,aaaa+a+2);
                                aaa=aaaa;
                                a=aaa.Find("\r");
                                aaaa[a]=0;
                                //短消息中心格式(国内(A1)国际(91)
                                centertype=atoi(aaaa);
                                m_msgstatus.SetWindowText(messagecenter);
                        }       
                        else
                        {
                                m_msgstatus.SetWindowText("无法找到短消息中心!");
                                centertype=2;
                        }

                        m_com.SetPortOpen(FALSE);
                        return 0;
                }
                else
                {
                        return -1;
                }
               
        }
        catch(COleDispatchException* e)
        {
                //m_msgstatus.SetWindowText("无法打开串口");
                m_msgstatus.SetWindowText(e->m_strDescription);
                return -1;
        }
        return -1;
}
点赞  2010-7-25 08:17
这个是好东西啊。。
haha
点赞  2010-7-26 23:04
感谢!
学习是我一生的追求!
点赞  2010-9-9 19:28

回复 楼主 zhaojun_xf 的帖子

谢谢楼主俺收了哈哈哈,好东西呼呼呼
点赞  2011-1-22 16:04
最近也在弄这个,和单片机一起用的,谢了,呵呵
点赞  2011-2-15 22:48
最近对此感兴趣。下载了。谢谢lz
点赞  2011-5-16 18:50
在学校已经申报了一个项目,是基于GSM的防盗报警系统,感谢楼主啊!
邮箱:ternence.hsu@foxmail.com
点赞  2011-5-23 16:59
好东西,非常感谢分享!
点赞  2011-5-24 11:55
感谢分享,收了!
点赞  2011-5-27 21:29
前几天玩的时候,用电脑串口调试Ok,但是用单片机串口测试失败了,麻烦啊
邮箱:ternence.hsu@foxmail.com
点赞  2011-6-9 14:26
谢谢楼主分享
点赞  2012-2-7 23:03
谢谢楼主,最近看智能家居通信方面,谢谢,哈哈
点赞  2012-2-21 22:55

HUIFU

HAODONGXI

点赞  2012-4-11 20:06
感谢!
点赞  2012-4-26 11:29
好东西
点赞  2012-6-8 07:30
谢谢共享,
点赞  2012-8-28 14:58
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复