UNO+ DS1302.h синхронизация времени с локальным компьютером
- Войдите на сайт для отправки комментариев
Пнд, 13/05/2019 - 11:27
Добрый день. Делаю синхронизацию времени с сервером, переменные объявляются корректно, подскажите почему не работает этот код?
(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---------
как вы определяете что он не работает ? по каким признакам ?
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. не выполняется нижняя строчка "
"
У вас код написан из предположения. что строка начинается с "set time" и помещается в буфер целиком - а ни то ни другое может быть не так. Вы когда indexOf() от строки берете - это и есть настоящее начало вашей строки. Сохраните индекс и ищите цифры от него, а не от начала.
И еще - по-моему вы в позициях цифр обсчитались, помните, что счет идет с нуля.
"не работает - не плати зарплату" (с) Ворота. ;)))
Ну и, к тому же, сегондя понедельник 13-ое. Кто ж станет работать?!
================
Б707! Тут же безумная "каша в стрингах", ты ж "шидевр" весь не видел, может Уна, со своими двумя КБ памяти, уже давно плачет в темном углу.
У вас код написан из предположения. что строка начинается с "set time" и помещается в буфер целиком - а ни то ни другое может быть не так. Вы когда indexOf() от строки берете - это и есть настоящее начало вашей строки. Сохраните индекс и ищите цифры от него, а не от начала.
И еще - по-моему вы в позициях цифр обсчитались, помните, что счет идет с нуля.
Поняла. Сейчас попробую искать от индекса.