SIM800l - AT + SABR = 1,1 команда возвращает ОШИБКУ (STM32) - PullRequest
0 голосов
/ 14 апреля 2020

Вот мой код для связи 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 возвращается с ошибкой. Обратите внимание, что я отправляю команды, используя прерывания, и я получаю сообщения от модуля, используя прерывания. Есть ли какой-то момент, который я пропустил? Какова возможная причина?

...