Не получается отправить показания с датчика с помощью SMS, используя Sim800F

Weylin
Offline
Зарегистрирован: 14.04.2021
// для теста подключил потенциометр
val = analogRead(analogPin);     // считываем значение с аналогового датчика
  int t;
  t = val / 4;
  
  if(started) 
    {
// эта часть работает корректно
      if (t>200)
          {
            if (sms.SendSMS("номер телефона", "AVARIA T>200"))
            Serial.println("\nSMS sent OK");
          }
 //Считывание входящих SMS и отсылка его в Serial port
     sms_position=sms.IsSMSPresent(SMS_UNREAD);
     
     if (sms_position) 
        {
            // прочитывание нового SMS
            Serial.print("SMS postion:");
            Serial.println(sms_position,DEC);

            // Загрузка информации о SMS в массивы
            sms.GetSMS(sms_position, phone_number, sms_text, 100);
            delay(300);
            // Отправка в Serial содержание SMS
            Serial.println(phone_number);
            Serial.println(sms_text);

            // Проверка входящего SMS, на наличие ключей
            if (!strcmp(admin,phone_number))
            {
              if (!strcmp(key,sms_text))
              {
// тут собственно и зарыт сам вопрос... не могу понять как можно отправить показания с датчика
               if (sms.SendSMS("номер телефона", "T='t'"))
              Serial.println("\nSMS sent OK");
              }
            }
// очистка входящих SMS
 for(i=1;i<=20;i++)
              {
                sms.DeleteSMS(i);
              }
            }
            delay(300);   
        delay(1000);

 

Weylin
Offline
Зарегистрирован: 14.04.2021

Как написано выше... Интересно следующее... Как можно отослать в SMS показания датчика из массива "int", есть ли какой либо способ) 

p.s. на скобки "{" прошу не обращать внимания... возможно неаккуратно копировал из кода)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Weylin пишет:

Как можно отослать в SMS показания датчика из массива "int", есть ли какой либо способ) 

p.s. на скобки "{" прошу не обращать внимания... возможно неаккуратно копировал из кода)

Способ есть, конечно. Вот так то делается

bool sendSMS(const char * nomer, const int * mas, const uint8_t len) {
	//...
}

void setup(void) {
	int massiv[] = { 1, 2, 3, 4 };
	constexpr uint8_t len = sizeof(massiv)/sizeof(massiv[0]);
	Serial.begin(9600);
	const bool result = sendSMS("+79601234567",massiv,len);
	Serial.println(result ? "Успешно" : "Ошибка");
}

void loop(void) {}

P.S. на отсутствие тела функции прошу не обращать внимания... возможно неаккуратно копировал из кода)

Weylin
Offline
Зарегистрирован: 14.04.2021

Евгений, большое спасибо))
p.s. честное cлово)... даже не заметил XD

Weylin
Offline
Зарегистрирован: 14.04.2021

Здраствуйте, спустя долгое время, попробовал ваш код. При его реализации в порте возникает сообщение "Ошибка"... Интересует, как это можно исправить?... 
Возможно ли, что проблема в отсутствии программы... в строке 01, необходимо ли заранее объявлять массивы/переменные  "nomer","mas","uint8_t len". И в целом, хотелось бы узнать как работает данный вами участок кода :)