Получить массив символов с помощью модуля SIM900
Я пытался получить массив символов с помощью SIM900, но не смог. Я могу получить только один символ, например 'G'
, но я хочу получить строку "abcd"
. Когда я использовал char*
для сохранения SMS, у меня не получилось.
Кто-нибудь знает как?
Мой код:
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
void setup()
{
pinMode(3,OUTPUT);
Serial.begin(19200); // для последовательного монитора
SIM900.begin(19200); // для GSM шилда
SIM900power(); // включить щит
delay(20000); // дать время для входа в сеть. `
SIM900.print("AT+CMGF=1\r"); // установить режим SMS на текст
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
// выпалить содержимое нового СМС при получении на последовательный выход GSM шилда
delay(100);
}
void SIM900power()
// программный эквивалент нажатия кнопки "питание" на GSM шилде24
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(7000);
}
void loop()
{
// Теперь мы просто отображаем любой текст, который GSM-шилд отправляет на последовательный монитор
if(SIM900.available() >0)
{
char *in = SIM900.read();
if (in =="abcd") digitalWrite(3,HIGH);
if (in == "00") digitalWrite(3,LOW);
}
}
@Reza Qasemi, 👍0
2 ответа
Лучший ответ:
Решено. Я использовал другую библиотеку, которая манипулировала файлами . И просто поддержите sim900 Вы можете получить его по этой ссылке ниже и включить в свою IDE Arduino. Эта библиотека написана группой digispark
#use this code and then inform me"
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
void setup()
{
pinMode(3,OUTPUT);
Serial.begin(19200); // для последовательного монитора
SIM900.begin(19200); // для GSM шилда
SIM900power(); // включить щит
delay(20000); // дать время для входа в сеть. `
SIM900.print("AT+CMGF=1\r"); // установить режим SMS на текст
SIM900.write(0x22);
SIM900.write(0x0D);
SIM900.write(0x0A);
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
// выпалить содержимое нового СМС при получении на последовательный выход GSM шилда
delay(100);
}
void SIM900power()
// программный эквивалент нажатия кнопки "питание" на GSM шилде24
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(7000);
}
void loop()
{
// Теперь мы просто отображаем любой текст, который GSM-шилд отправляет на последовательный монитор
if(SIM900.available() >0)
{
char *in = SIM900.read();
if (in =="abcd") digitalWrite(3,HIGH);
if (in == "00") digitalWrite(3,LOW);
}
}
Привет. Спасибо . Но это не сработало. Мне нужно выбрать память и сохранить смс в стороне и открыть ее (для этого нам нужно использовать AT-команды), @Reza Qasemi
Объяснение того, что вы изменили, было бы полезно., @gre_gor
Это решило. Я использовал другую библиотеку gsm и работал. @gre_gor, @Reza Qasemi
- Как устранить сообщение об ошибке "assignment of function 'void digitalWrite (uint8_t, uint_8)"?
- Считывание данных нескольких датчиков из текстового файла, расположенного на SD-карте в Arduino/ESP32
- Я не могу правильно получить строку, которую я отправил через nrf
- Чтение двоичного файла на SD-карте
- Проблемы с Serial.read()
- Как запрограммировать 2 ультразвуковых датчика, один на серводвигателе и один прикрепленный на передней стороне автомобиля?
- Разбор массива объекта в конструкторе библиотеки
- Термистор не работает
Каким было это решение?, @Aiapaec
Правильно и стабильно @Aiapaec, @Reza Qasemi
Я имел в виду, не могли бы вы опубликовать код решения?, @Aiapaec
Коды решений есть в библиотеке в ответе. Вы должны скачать библиотеку и включить ее в свой arduino ide @Aiapaec, @Reza Qasemi