Arduino:Библиотеки/GSM/Класс GSM SMS/peek(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 135: Строка 135:


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}





Текущая версия от 12:22, 8 июля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.

Функция peek()[1]

Возвращает следующий байт (символ) из входящего SMS, не удаляя его из сообщения. Другими словами, успешный вызов функции SMS.peek() вернет тот же символ, что и следующий вызов функции SMS.read(). Функция SMS.peek() наследует у класса Stream.

Синтаксис

SMS.peek()

Параметры

Нет.

Что возвращает

Первый байт, доступный в SMS-сообщении или «-1», если нет данных, доступных для считывания.

Пример

/*
 Получатель SMS-сообщений

 Это скетч для GSM-модуля Arduino. 
 Он считывает входящие SMS и отображает их через монитор порта. 

 Цепь:
 * GSM-модуль 

 Создан 25 февраля 2012 года Хавьером Зорзано (Javier Zorzano) / TD

 Этот скетч не защищен авторским правом.
*/

// библиотеки:
#include <GSM.h>

// PIN-код:
#define PINNUMBER ""

// инициализируем экземпляр библиотеки:
GSM gsmAccess; // чтобы включить режим отладки, в скобочках нужно поставить параметр «true»
GSM_SMS sms;

char remoteNumber[20];  // массив для хранения исходящего номера

void setup() 
{
  // инициализируем последовательную коммуникацию:
  Serial.begin(9600); 

  Serial.println("SMS Messages Receiver");  //  "Получатель SMS-сообщений"

  // состояние соединения:
  boolean notConnected = true;

  // запускаем GSM-модуль; если у SIM-карты есть PIN-код,
  // вписываем его в скобочки функции begin():
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");  //  "Соединение не удалось"
      delay(1000);
    }
  }

  Serial.println("GSM initialized");  //  "GSM инициализирован"
  Serial.println("Waiting for messages");  //  "Ожидание сообщений"
}

void loop() 
{
  char c;

  // проверяем, есть ли SMS, которые можно прочесть:  
  if (sms.available())
  {
    Serial.println("Message received from:"); //  "Сообщение получено от: "

    // извлекаем исходящий номер:
    sms.remoteNumber(remoteNumber, 20);
    Serial.println(remoteNumber);

    // это пример того, как можно отклонить пришедшее SMS;    
    // в данном случае будут отклонены все SMS, начинающиеся с «#»:
    if(sms.peek()=='#')
    {
      Serial.println("Discarded SMS");  //  "Сообщение отклонено"
      sms.flush();
    }

    // считываем байты сообщения и выводим их на монитор порта:
    while(c=sms.read())
      Serial.print(c);

    Serial.println("\nEND OF MESSAGE");  //  "\nКОНЕЦ СООБЩЕНИЯ"

    // удаляем сообщение из памяти модема:
    sms.flush();
    Serial.println("MESSAGE DELETED");  //  "СООБЩЕНИЕ УДАЛЕНО"
  }

  delay(1000);

}

См.также

  1. beginSMS()
  2. ready()
  3. endSMS()
  4. available()
  5. remoteNumber()
  6. read()
  7. write()
  8. print()
  9. peek()
  10. flush()

Внешние ссылки