Анализ UNIX-времени из char[]

time mkr1000 web-service

Я хочу проанализировать большое число, чтобы синхронизировать время на моем arduino. Для этого я отправляю ему строку с текущим временем в формате Unix, которая выглядит примерно так:

1535441277

Для этого я просто вызываю PHP-скрипт, который выводит функцию time().

Но с string.toInt()я не могу его разобрать. Я предполагаю, что число слишком велико для int или long. Но я не могу поместить его напрямую в метод setEpoch() из библиотеки RTCzero, потому что он принимает в качестве входного типа данных только uint32_t. Так как же мне разобрать большие числа в системе, где double не реализован? И я не просто пытаюсь разобрать весь HTTP-ответ. Я прохожусь по ответу и в соответствующей строке записываю все символы в массив символов. Я также удалил символы \r и \n.

, 👍0


2 ответа


Лучший ответ:

1

В 32-битных системах uint32_t обычно совпадает с unsigned int и unsigned long. Вы должны иметь возможность разобрать число с помощью strtoul(), что является довольно стандартным и возвращает unsigned long.

,

0

Спасибо за быстрый ответ. Я также нашел другое решение: перед тем, как выводить время, удалите большую часть времени, просто удалив текущую временную метку на стороне сервера. Позже я добавляю точно такое же количество при использовании функции setEpoch(). Я знаю, что это не очень элегантно, но для меня это работает.

,

Как разделить временную базу (этот большой фрагмент) между 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