Анализ UNIX-времени из char[]
Я хочу проанализировать большое число, чтобы синхронизировать время на моем arduino. Для этого я отправляю ему строку с текущим временем в формате Unix, которая выглядит примерно так:
1535441277
Для этого я просто вызываю PHP-скрипт, который выводит функцию time()
.
Но с string.toInt()
я не могу его разобрать. Я предполагаю, что число слишком велико для int или long. Но я не могу поместить его напрямую в метод setEpoch()
из библиотеки RTCzero, потому что он принимает в качестве входного типа данных только uint32_t
. Так как же мне разобрать большие числа в системе, где double не реализован? И я не просто пытаюсь разобрать весь HTTP-ответ. Я прохожусь по ответу и в соответствующей строке записываю все символы в массив символов. Я также удалил символы \r и \n.
@Cowboy_Patrick, 👍0
2 ответа
Лучший ответ:
В 32-битных системах uint32_t
обычно совпадает с unsigned int
и unsigned long
. Вы должны иметь возможность разобрать число с помощью strtoul()
, что является довольно стандартным и возвращает unsigned long
.
Спасибо за быстрый ответ. Я также нашел другое решение: перед тем, как выводить время, удалите большую часть времени, просто удалив текущую временную метку на стороне сервера. Позже я добавляю точно такое же количество при использовании функции setEpoch()
. Я знаю, что это не очень элегантно, но для меня это работает.
- Циклы выходят из строя через ~ 5 минут при выполнении двух вызовов API каждые 10 секунд с использованием клиента WiFi.
- Как справиться с rollover millis()?
- Как получить текущее время и дату в Arduino без внешнего источника?
- Преобразование в Unix Timestamp и обратно
- Как запустить цикл на определенное время?
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Разница между «time_t» и «DateTime»
- Точность часов времени Arduino
Как разделить временную базу (этот большой фрагмент) между Arduino и ПК?, @Dmitry Grigoryev
@DmitryGrigoryev, вычтите эпохальное время первой секунды этого года, @Juraj
Итак, у вас уже установлено текущее время и на Arduino, и на ПК?, @Dmitry Grigoryev
@DmitryGrigoryev, прочитайте вопрос. Он получает время с помощью HTTP GET-запроса к своей службе на сервере., @Juraj
@Juraj Я совершенно не вижу этого в вопросе., @Dmitry Grigoryev
@DmitryGrigoryev, Это экспертный перевод фразы «Я просто вызываю PHP-скрипт, который отображает функцию time()»., @Juraj
@Juraj Но это та строка, которую он изначально не может разобрать, не так ли? Кроме того, запрос GET идет от Arduino к серверу, а вывод
time
идет наоборот., @Dmitry Grigoryev