SIM300问题

SIM300返回"+CMS ERROR:517"是什么原因啊?在网上查说是什么"无效的字符的PDU"。哪位大侠帮解决一下~!
"

回答: SIM300问题

  1. 517: SM BL not ready
    你是不是在完成一些跟SIM卡有关的指令时提示这个错误?比如删除卡内短信
    如果是,在模块上电后等待一段时间再做这个操作。
    我没发现有哪个指示可以判断模块准备就绪,如果谁知道,麻烦共享下,谢谢。

SIM300发送数据

  1. Q
    SIM300的模块连接PC上服务端发送数据,SIM300通过单片机控制,我采用UDP方式连接,现在可以确定服务端程序没问题,因为我用普通的客户端程序测试过了,GPRS那边也经过一步步调试确定发送了数据,因为SEND指令已经成功返回了<SEND OK>。但是现在服务端就是收不到数据,困惑了我们一大帮人,这到底是什么所致啊,会不会跟电信提供的服务有关系。。。。。几天以前还成功的收到过数据,但是突然就不行了。
  2. A
    GPRS通过公网连接你的服务器,AT+CIPSTART=\"udp\",\"当前服务器公网的IP\",\"端口\"
    最好是固定IP地址,自己的内网要做好路由。你可以通过www.ip138.com来查看你当前的公网ip。

SIM300 IP包发送失败

  1. Q
    关键程序简化后如下:
    int TCP_Send (char *src_buf, unsigned int buf_len)
    {
        int  i;
        char AtCMD[64] = {0};

        if ( !QuickQuit ) {
            LCDDisLable ("正在发送数据...");
        }

        GSM_ClearVariable();

        sprintf (AtCMD, "AT+CIPSEND=%d\r\n", buf_len);
        for (i = 0;i < strlen (AtCMD);i++) {//发送AT命令:AT+CIPSEND=20\r\n
            GSM_DATA_SEND (AtCMD[i]);
            }
        Delay(30);
        for (i = 0;i < buf_len;i++) {
          GSM_DATA_SEND (* (src_buf + i));
        }
        if(wait_atReturn("SEND OK\r\n",50)!=0){//等待module(SIM300)返回“SEND OK”
          LCDDisLable ("数据发送失败2");
          return -1;  
        }else{
          LCDDisLable ("数据发送成功");
        } 
        return 1;
    }

    经调试,问题就出在wait_atReturn("SEND OK\r\n",50)
    调试时,发现(查看存储器)SIM300返回情况如下:
    1.什么都不返回 
      存储器:“00 00 00 00 ...”
    2.返回:“/r”   
      存储器:“0D 00 00 00 ...”
    3.返回:“/r/nSEND OK/r/n+IPD20:01 30 30 31 35 55 55 55 55 55 55 55 55 ff 84 03 00 C0 00 B9”
      存储器“0D 0A 53 45 5E 44 20 4F 4B 0D 0A 2B 49 50 44 32 30 3A 01 30 30 31 35 55 55 55 55 55 55 55 55 ff 84      03 00 C0 00 B9”

    请问各位大侠,为什么会出现这么多情况?是SIM300出问题了,还是我程序有bug?
  2. A
    。。。学习了。

SIM300模块用AT指令发短信的一个很奇怪现象(80分求助)

  1. Q
    我用SIM300搭建了一个模块。插了一张动感地带的卡在上面,来测试发短信
    先开始发的是GSM格式的字符短信 指令如下:
    AT+CSCS="GSM"
    OK
    AT+CMGF=1
    OK
    AT+CMGS="15846821234"
    >1234
    +CMGS: 55
    OK
    上面的号码是我手机的号码,能正常收到短信。显示为123
    然后开始发UCS2格式的中文短信 指令如下:
    AT+CSCS="UCS2"
    OK
    AT+CMGF=1
    OK
    AT+CMGS="00310035003800340036003800320031003200330034"
    >4F60597D                    (中文是你好的意思)
    +CMGS: 56
    OK
    这个时候手机也能收到短信,但是打开发现里面什么也没有是空短信后来又试了还多次都一样
    第二天公司给了张神州行的卡给我,我试了一下发现能正常发送中文短信,高兴的要死。当时也没太注意。过了几天再次测试的时候UCS2的中文短信能正常发送,但是发GSM的字符短信的时候接受的空短信。晕死,于是我把我上次测试的那张动感地带的卡插进去试了试发现还是和以前一样,能发GSM格式的短信不能发UCS2格式的。刚好和神州行的反过来了。
    这是怎么搞的啊。。。。。。
    你大爷这不是耍我么,谁能找出原因立即散分
  2. A
    哈哈,终于知道问题出在什么地方了。
    除了要设置 AT+CSCS="GSM" 以外还要设置 AT+CSMP=17,167,0,0这里最后一位设置成0就可以正常收发GSM格式的短信了。如果设置成25再把AT+CSCS设置成"UCS2"正常收发"UCS2"格式的短信了。晕倒。。。。。。。。。。。。。

基于GPRS模块sim300的短信发送

  1. Q
    读帖的你好:
    我现在在调试GPRS sim300模块,我现在用pc机进行调试的时候,是可以进行短信的发送和接收的,但是,我用单片机进行调试的时候,单片机和pc机进行通讯也是正常的,但是,我用单片机与GPRS模块进行联机的时候就不行了?请问这是什么原因?
  2. A
    求助!楼主的项目做好了吗?我有很多问题需要向你求教呀!我正在做这个模块,很多问题需要解决。。。。

SIMCOM公司的SIM300发短信问题

  1. Q
                    sp.Write("AT" + "\r");
                    sp.Write("ATE" + "\r");
                    cmd_str = "AT+CSCS=\"GSM\"\r";
                    sp.Write(cmd_str);
                    Thread.Sleep(200);
                    sp.Write("AT+CMGF=1" + "\r");  //设置短信格式为文本格式
                    Thread.Sleep(200);
                    sp.Write("AT+CMGS=+86" + mobile + "\r");  //往此电话发送短信
                    ....


    现在我总发不出短信。

    收短信,我现在已经弄好,串口通讯没有问题,只是AT指令的问题.
     
  2. A
    是不是每条指令发送后没有等待反馈就发送下一条指令而导致收发撞车?楼主使用串口调试器一条指令一条指令的发送试一试。

用过SIM300模块的请进,问个问题

  1. Q
    AT+CGDCONT=1,"IP","CMNET"  
    AT+CGCLASS?  
    AT+CGATT?  
    AT+CGACT=1,1
    AT+CIPSTART?
    AT+CIPSTART="TCP","服务器IP",端口
    用以上命令可以连接到GPRS网络。
     
    AT+CIPSEND
    >hello
    SEND OK

    但是接收不到数据啊。我们的服务器一直在发数据,但是GPRS模块好像没有接收到啊。串口上没有数据输出。
  2. A
    没问题,可能是网络延迟,建议再等等,或者检查PC端软件

关于串口数据的采集和分离(高分求助)

  1. Q
    小弟现在正在用SIM300 GPRS模块在做一些开发,用的是430的单片机。GPRS模块和单片机是通过串口进行数据通信的。在写程序的时候遇到了一个很大的麻烦。首先GPRS模块返回数据(向单片机发送数据)具有很大的随机性,什么时候有数据过来时不确定的。在程序中数据接收用的是中断处理,于是问题来了。
    比如我想在向SIM300发一个AT指令,指令正确的话应该向单片机返回AT</r></n>OK</r></n>我现在想要对返回的数据进行采集,以便进行分析。但是我该从什么时候开始采集,又该怎么判断采集结束呢,用</r></n>肯定不行,不是因为数据是以</r></n>开始,又是以</r></n>结束,而是假如在向SIM300发完指令,而SIM300还没来得及返回AT</r></n>OK</r></n>时,突然收到一条短信(收到短信,模块也会向单片机返回数据进行提示,这些数据都是以</r></n>开始和</r></n>结束的),这样的话很定会发生误判。又不能采用一直等的方式,这样很容易产生死循环。试了好多方法都不是太理想,比如以有数据发过来,且多长时间没有数据继续发过来作为判结束。这些方法都能判断一帧数据结束,但是不能解决我上面提到的问题,也就是这帧数据是不是之前所发指令所回应的数据。说白了问题的根本就是,可以判断一帧数据结束,但是无法判断着帧数据是不是之前所发指令回应数据,如果就此判断肯定会发生误判。
    怎样对串口的数据进行提取才比较安全有效啊,有哪位大虾做过相关开发没,指点指点小弟啊。小弟也写了一些demo程序,也能跑的起来,但是不是太健壮,程序跑飞的情况时有发生。主要就是在串口数据采集过程中存在问题,SIM300模块返回的数据不是误判了,就是没采集到。
  2. A
    楼主,我也在调试GPRS模块,而且我也是用430单片机在做。
    一起研究哈,加我QQ:279804250。
    至于你说的问题,我见人家有这样处理的:
    利用字符串函数strstr(char *str1, char *str2)。
    strstr(recieve_data,"OK")
    receive_data为串口接收数据存放的数组
    strstr()函数具体用法你可以百度下就知道了
    不知道这个回答你满意不,呵呵

GPRS通信问题

  1. Q
    板载主要资源
    GSM/GPRS 模块 : SIM300 V7.03 国际环保无铅
    GPS模块 : 世界最好GPS模块精度2.5米瑞士ublox NEO
    MCU :STC12C5A60S2 双串口调试倍好
    温度传感器: 选配
    显示器 :NOKIA5110 调试显示
    外接IO : LED 用于远程控制测试或者连接外设。


    想要实现的内容:想要通过gprs无线传输和短信两种方式把GPS采集到的信息定时传送到电脑上,求思路
  2. A
    AT命令加串口通信

GPRS模块开发疑问(高分求助)

  1. Q
    小弟正在做GPRS模块的相关开发,由于第一次接触GPRS所以有很多不明白的地方。之前发了不少文章得到大家的帮忙解决了不少问题。现在还有一些疑问想请大虾们指教。
    我用SIM300搭建了一个模块能正常收发短信和打电话,也能进行数据连接,但是连接上过不了一会就返回CLOSE怎么回事啊,返回CLOSE以后发其他指令都无效了,必须发AT+CIPSHUT才行。
    因为SIM300模块自带协议栈所以直接用AT指令建立连接,具体指令是这样的
    AT+CGDCONT=1,"IP","CMNET"
    OK
    AT+CGATT=1
    OK
    (AT+CGACT指令有BUG发了会死机所以没法,网上说可以直接跳过)
    AT+CIPSTART="TCP","220.181.6.18","80"(是ping百度得到的服务器地址和80端口先试一下。因为公司的电脑不是固定的IP)
    OK

    CONNECT OK
    AT+CIPSEND
    >123456
    CLOSE
    我还没发完呢就返回CLOSE了
    这是什么问题,模块是我自己搭建的,天线还没接。不知道是不是天线没接的问题。应该不是模块的硬件电路设计错误吧,收发短信和打电话都没问题。不知道是不是指令或者是天线的问题。那位大虾指点下。
    还有一个就是领导说要把GPS采集到的数据通过GPRS模块发给服务器,并传给一个地图软件。这个我就有点懵了,我可以在服务器上上装个SIM300公司的SERVER.EXE来和GPRS模块建立连接和相互收发收据,但是这个软件又怎么能把数据传给另一个什么地图软件呢。晕倒
    地图软件是什么领导还没给我。
    如果要是这样的话是不是要自己写函数啊,比如用C或者是C++来写一个端口侦听的程序来侦听端口的数据。有这样的API函数么,具体要用到哪些那位大虾能不能指点下。小弟不甚感激!!!!!!!!!
  2. A
    天线是要接的。不接天线,模块的发射功率很大,如果你的供电电源稍差点,就会出问题。