UNO+ DS1302.h синхронизация времени с локальным компьютером

Виктория
Offline
Зарегистрирован: 12.05.2019

Добрый день. Делаю синхронизацию времени с сервером, переменные объявляются корректно, подскажите почему не работает этот код?

(inputString.indexOf("set time")!=-1)

      // Установка времени на устройстве
 входящая строка "set time 46,01,10,13,05,2019,1"
      // ----------------Установка времени------------------------START---------
    if (inputString.indexOf("set time")!=-1) {
      digitalWrite(LED_BUILTIN, LOW);
      client.println("Set time: "+inputString);
      uint8_t     ss  = inputString.substring(10, 11).toInt();  //секунды
      uint8_t     nn  = inputString.substring(13, 14).toInt();  //минуты  
      uint8_t     hh  = inputString.substring(16, 17).toInt();  //часы
     uint8_t     dd  = inputString.substring(19, 20).toInt();   //день
      uint8_t     mm  = inputString.substring(22, 23).toInt();  //месяц
      uint16_t    yy  = inputString.substring(25, 28).toInt();  //год 
      uint8_t     kk  = inputString.substring(30, 30).toInt();  //день недели

      // Проверка в порт переданных переменных
      Serial.println("Установка времени: "+String(ss)+","+String(nn)+","+String(hh)+","+
      String(dd)+","+String(mm)+","+String(yy)+","+String(kk));
      // Запись в модуль
  rtc.halt(false);
  rtc.writeProtect(false);
  rtc.setDOW(kk);        // день недели
  rtc.setTime(hh, nn, ss);     // 12:00:00 (24hr формат)
  rtc.setDate(dd, mm, yy);   // 5.10.2019
  digitalWrite(LED_BUILTIN, HIGH);
  //----------------Установка времени-------------------------------END---------

 

mixail844
Offline
Зарегистрирован: 30.04.2012

как вы определяете что он не работает ? по каким признакам ? 

Виктория
Offline
Зарегистрирован: 12.05.2019

1. Делаю запрос на выдачу времени:

    if (inputString.indexOf("get time")!=-1) {
      client.println("Current time: "+String(rtc.getDOWStr())+", "+String(rtc.getDateStr())+" "+String(rtc.getTimeStr()));
      Serial.println("Текущее время: "+String(rtc.getDOWStr())+", "+String(rtc.getDateStr())+" "+String(rtc.getTimeStr()));
    } 

2. не выполняется нижняя строчка  "

digitalWrite(LED_BUILTIN, HIGH);

"

b707
Offline
Зарегистрирован: 26.05.2017

У вас код написан из предположения. что строка начинается с "set time" и помещается в буфер целиком - а ни то ни другое может быть не так.  Вы когда indexOf() от строки берете - это и есть настоящее начало вашей строки. Сохраните индекс  и ищите цифры от него, а не от начала.

И еще - по-моему вы в позициях цифр обсчитались, помните, что счет идет с нуля.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

"не работает - не плати зарплату" (с) Ворота. ;)))

Ну и, к тому же, сегондя понедельник 13-ое. Кто ж станет работать?!

================

Б707! Тут же безумная "каша в стрингах", ты ж "шидевр" весь не видел, может Уна, со своими двумя КБ памяти, уже давно плачет в темном углу.

Виктория
Offline
Зарегистрирован: 12.05.2019

b707 пишет:

У вас код написан из предположения. что строка начинается с "set time" и помещается в буфер целиком - а ни то ни другое может быть не так.  Вы когда indexOf() от строки берете - это и есть настоящее начало вашей строки. Сохраните индекс  и ищите цифры от него, а не от начала.

И еще - по-моему вы в позициях цифр обсчитались, помните, что счет идет с нуля.

Поняла. Сейчас попробую искать от индекса.