Вот мой код для связи SIM800l для получения данных HTTP. Первые два шага в порядке, но третий имеет проблемы.
if (httpStep == 1) {
sprintf(sBuffer,"AT+SAPBR=3,1,\"Contype\",\"GPRS\"\r\n");
tx = AT_Send(&huart2,sBuffer,sizeof("AT+SAPBR=3,1,\"Contype\",\"GPRS\"\r\n"));
if (tx == AT_OK) {
memset(sBuffer,0,sizeof(sBuffer));
httpStep++;
}
} else if (httpStep == 2) {
sprintf(sBuffer,"AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n");
tx = AT_Send(&huart2,sBuffer,sizeof("AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n"));
if (tx == AT_OK) {
memset(sBuffer,0,sizeof(sBuffer));
httpStep++;
}else {
memset(sBuffer,0,sizeof(sBuffer));
httpStep = 2;
}
} else if (httpStep == 3) {
sprintf(sBuffer, "AT+SAPBR=1,1\r\n");
tx = AT_Send(&huart2,sBuffer,sizeof("AT+SAPBR=1,1\r\n"));
if (tx == AT_OK) {
memset(sBuffer,0,sizeof(sBuffer));
httpStep++;
}
Когда я использую последовательный терминал, он получает данные http, но когда я посылаю точно такую же команду, установленную через микропроцессор, AT + SAPBR возвращается с ошибкой. Обратите внимание, что я отправляю команды, используя прерывания, и я получаю сообщения от модуля, используя прерывания. Есть ли какой-то момент, который я пропустил? Какова возможная причина?