博士
最后登录1970-1-1
在线时间 小时
注册时间2014-1-6
|
用的MINI板跟野火的GSM/GPRS模块连接。
首先说明打电话和发短信是没问题了。
GPRS由于野火没有例程,自己琢磨起来比较吃劲。
现在初始化没问题,但是发生不成功。
正常的当发送AT+CIPSEND指令后会返回一个<来提示我输入,但是这里却返回ERROR,然后过一段时间后自动CLOSE了连接。搞不懂为什么~
我用开发板连接和用上位机连接GSM/GPRS模块都试过,一样的结果,就是发送返回ERROR!
下面是根据打电话例程改编的~
uint8_t sim900a_gprs_init(void)
{
if (sim900a_cmd("AT+CGCLASS=\"B\"\r", "OK", 100) != SIM900A_TRUE) return SIM900A_FALSE;
if (sim900a_cmd("AT+CGDCONT=1,\"IP\",\"CMNET\"\r", "OK", 100) != SIM900A_TRUE)
return SIM900A_FALSE;
if (sim900a_cmd("AT+CGATT=1\r", "OK", 100) != SIM900A_TRUE)
return SIM900A_FALSE;
if (sim900a_cmd("AT+CIPCSGP=1,\"CMNET\"\r", "OK", 100) != SIM900A_TRUE)
return SIM900A_FALSE;
return SIM900A_TRUE;
}
上述初始化过程的四个步骤都有返回OK。这里有个提醒,这里的第四步不能重复设置,设了一次再设就不行了。原理是设置1次已经把设备附着到CMNET网络了。
uint8_t sim900a_gprs_tcp_link(char *localport,char * serverip,char * serverport)
{
sim900a_tx_printf("AT+CLPORT=\"TCP\",\"%s\"\r",localport); //获取本地端口
SIM900A_DELAY(100);
sim900a_tx_printf("AT+CIPSTART=\"TCP\",\"%s\",\"%s\"\r",serverip,serverport);
SIM900A_DELAY(100);
return sim900a_cmd_check("OK");
}
建立TCP连接也是OK的。这里不懂为啥要设置本地端口。
uint8_t sim900a_gprs_send(char * str)
{
SIM900A_CLEAN_RX();
sim900a_tx_printf("AT+CIPSEND\r");
SIM900A_DELAY(100);
printf(sim900a_waitask(0));
sim900a_tx_printf("%s%c",str,0x1A);
SIM900A_DELAY(100);
return sim900a_cmd_check("OK");
}
就在这里出问题了。发送AT+CIPSEND命令后,返回来的是ERROR,我通过串口1打印在显示器上看到。
在网上了解了一下也就是这几个步骤来着。请前辈们指点迷津~ |
|