При компиляции этого кода он говорит: 'sendATcommand' was not declared in this scope
int8_t answer;
int onModulePin= 2;
int counter;
char aux_str[150];
char aux;
char frame[200];
char latitude[15];
char longitude[15];
char altitude[6];
char date[16];
char time[7];
char satellites[3];
char speedOTG[10];
char course[10];
int x = 0;
char N_S,W_E;
void setup()
{
//pinMode(onModulePin, OUTPUT);
Serial.begin(115200);
delay(3000);
delay(3000);
Serial.println("Starting...");
delay(30000);
while (sendATcommand("AT+CREG?", "+CREG: 0,1", 2000) == 0);
// устанавливает APN , имя пользователя и пароль
sendATcommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"", "OK", 2000);
sendATcommand("AT+SAPBR=3,1,\"APN\",\"gpinternet\"", "OK", 2000);
sendATcommand("AT+SAPBR=3,1,\"USER\",\"\"", "OK", 2000);
sendATcommand("AT+SAPBR=3,1,\"PWD\",\"\"", "OK", 2000);
// получает носитель GPRS
while (sendATcommand("AT+SAPBR=1,1", "OK", 20000) == 0)
{
delay(5000);
}
delay(3000);
// устанавливает APN, имя пользователя и пароль
// sendATcommand("AT+CGPSPWR=1", "OK", 2000);
// sendATcommand("AT+CGPSRST=0", "OK", 2000);
while( (sendATcommand("AT+CGPSSTATUS?", "2D Fix", 5000) ||
sendATcommand("AT+CGPSSTATUS?", "3D Fix", 5000) ||
sendATcommand("AT+CGPSSTATUS?", "Unknown", 5000)) == 0 );
}
int8_t get_GPS()
{
int8_t counter, answer;
long previous;
// Сначала получить строку NMEA
// Очистить входной буфер
while( Serial. Available() > 0) Serial. Read();
// request Basic string
sendATcommand("AT+CGPSINF=0", "AT+CGPSINF=0\r\n\r\n", 2000);
counter = 0;
answer = 0;
memset(frame, '\0', 100); // Инициализировать строку
previous = millis();
// этот цикл ожидает появления строки NMEA
do
{
if(Serial.available() != 0){
frame[counter] = Serial.read();
counter++;
// проверка, есть ли желаемый ответ в ответе модуля
if (strstr(frame, "OK") != NULL)
{
answer = 1;
}
}
// Waits for the asnwer with time out
}
while((answer == 0) && ((millis() - previous) < 2000));
frame[counter-3] = '\0'; // '\0' where it finds the token you supplied, and returns a pointer to the start of the string.
// Parses the string
strtok(frame, ",");
strcpy(longitude,strtok(NULL, ",")); // Получает долготу
strcpy(latitude,strtok(NULL, ",")); // Получает широту
strcpy(altitude,strtok(NULL, ".")); // Получает высоту
strtok(NULL, ",");
strcpy(date,strtok(NULL, ".")); // Gets date
strtok(NULL, ",");
strtok(NULL, ",");
strcpy(satellites,strtok(NULL, ",")); // Получает спутники
strcpy(speedOTG,strtok(NULL, ",")); // Получает скорость над землей.
return answer;
// преобразовать строку в целое число и добавить ее в конечную плавающую переменную
deg = atof(aux);
strcpy(aux, strtok(NULL, '\0'));
minutes=atof(aux);
if (deg < 100)
{
minutes += deg;
deg = 0;
}
else
{
minutes += int(deg) % 100;
deg = int(deg) / 100;
}
if( deg < 0 )
{
neg = true;
deg*=-1;
}
void loop()
{
delay(1000);
delay(1000);
Serial.print("AT+CMGF=1\r"); // Команда AT для выбора формата SMS.
delay(100);
Serial.println("AT + CMGS = \"+880XXXXXXXXXX\""); // Команда AT для отправки SMS на мобильный номер получателя,в международном формате.
delay(100);
Serial.println("Here is my latitude and longitude;");
Serial.println(latitude);
Serial.println(longitude); // сообщение для отправки
delay(100);
Serial.println((char)26); // End AT command with a ^Z, ASCII code 26
delay(100);
Serial.println();
delay(5000);
}
// Clean the input buffer
while( Serial.available() > 0) Serial.read();
Serial.println(ATcommand); // Send the AT command
x = 0;
previous = millis();
// this loop waits for the answer
do
{
if(Serial.available() != 0){
response[x] = Serial.read();
x++;
// check if the desired answer is in the response of the module
if (strstr(response, expected_answer1) != NULL)
{
answer = 1;
}
}
// Waits for the asnwer with time out
}while((answer == 0) && ((millis() - previous) < timeout));
//response[x] = 0;
//Serial.println(response);
return answer;
}
@israel, 👍1
Обсуждение0
Смотрите также:
- GPRS SIM900 и GPS NEO-6M не работают вместе
- GSM и GPS-модуль не работают вместе
- как заставить щит GPRS/GSM SIM900 работать с модулем gps neo-6M с помощью платы Arduino UNO
- Arduino Uno + SIM808 EVB 3.2.4 не работает должным образом?
- Соединение AI A7 Thinker с Arduino
- Конструкция устройства слежения за транспортным средством
- Ошибка инициализации sim808 при попытке использовать DFRobot для получения GPS
- Получение «Открыть сбой питания GPS» на модуле SIM808
Извините, но похоже, что вы слепо скопировали и склеили некоторые коды, как Франкенштейн. Очевидно, что некоторые недостающие части (похоже, вы потеряли несколько объявлений функций, например, после " loop()
и после
get_GPS ()"). И, возможно, из-за этого у вас разные фигурные скобки. И действительно, "sendATcommand ()" нигде не объявляется. Вы не можете просто скопировать разные коды вместе, перепутав их, а затем подумать, что это все еще работает. Вам нужно действительно понять, что означают эти коды и как они работают. Пожалуйста, сделайте базовый учебник по C/C++, чтобы изучить синтаксис., @chrislЯ голосую за то, чтобы закрыть этот вопрос, потому что он касается синтаксиса C/C++, а не Arduino., @chrisl
Если вы *не напишете* функцию " sendATcommand ()", остальная часть кода *никогда* не сможет ее найти! *Подумайте* о том, что вы делаете - не просто слепо копируйте и вставляйте случайные фрагменты кода со случайных веб-сайтов., @Majenko