Как передать/принять текущее время
- Войдите на сайт для отправки комментариев
Ср, 23/05/2018 - 16:16
Существует ли способ принять время в формате: 13:50:23?
Передача:
mySerial.print("<Time>"); mySerial.print(sTime);
Можно конечно передать отдельно часы, минуты и секунды, и принять с помощью mySerial.parseInt(), вставив недостающие ":" Но можно ли просто принять это как текст: "13:50:23"?
Можно.
Несколько вариантов, но все связаны разделением принятой строки на фрагменты.
Существует ли способ принять время в формате: 13:50:23?
Да, существует.
Существуют способы передать и принять время в любом формате, хоть в текстовом: "двадцать три часа, семнадцать минут, тридцать две секунды". Другой вопрос, зачем?
Вот Вы собрались передавать время в виде восьми символов. В то время, как в системе оно хранится в виде четырёх байтов. Причём в эти четыре байта помещается не только время, но и дата. Может разумнее передавать системное время (вдвое меньше данных), а красивую строку уже на месте рисовать, если надо?
можно ли просто принять это как текст: "13:50:23"?
Странный вопрос... вы же можете отправить в Сериал "Hello World" и принять потом оттуда?
А чем строка "13:50:23" хуже?
Может ему просто на дисплее надо это нарисовать... Ну, или человек использует либу, которая сама парсит такую строку.
Странный вопрос... вы же можете отправить в Сериал "Hello World" и принять потом оттуда?
А чем строка "13:50:23" хуже?
Это у Вас странный комментарий!
Про Hello World есть учебное видео на ютубе. Так и называется "Serial.print("Hello, world!");" - миллион просмотров, между прочим!
А про строку "13:50:23" даже паршивого бложика нету! Ну, и как с ней работать? Вот тем и хуже!
Мне это нужно, чтобы слать в приложение Blynk - своеобразный контроль зависания. Я научился отправлять и принимать только целые и с точкой, как отправлять текст я не нашел...(
как отправлять текст я не нашел...(
В стартовом посте, в скетче, строка №1 - это отправка текста. Нашли?
Это понятно...) Мне же нужно туда запихнуть переменную со временем...
Ну, и пихайте, кто Вам не даёт. Как она у Вас называется, Ваша переменная? Допустим, kaka, ну так и пишите Serial.print(kaka);
Дык, оказывается я правильно написал во второй строке первого сообщения..) Хорошо, с этим разобрались..), самое главное теперь как это теперь принять на другой стороне?
Ну, и пихайте, кто Вам не даёт. Как она у Вас называется, Ваша переменная? Допустим, kaka, ну так и пишите Serial.print(kaka);
не, лучше Serial.print(caca);
Дык, оказывается я правильно написал во второй строке первого сообщения..) Хорошо, с этим разобрались..), самое главное теперь как это теперь принять на другой стороне?
Как передавали, так и принимайте - в строку.
Хотя, я Вам уже говорил, лучше передавайте системное время. Тем более, Вы говорите, что целые передвать/принимать умеете.
Как передавали, так и принимайте - в строку.
Я пользовался только mySerial.parseInt();, но он остановится на ":".
---
Системное время никогда не использовал, поэтому не знаю как передавать.
А куда в Вlynk слать? Какой виджет? Или какую переменную?
value display
Сердце вещует, что время вывести на value display нельзя. На LCD можно, в терминал...
Як же нельзя, можно..): Blynk.virtualWrite(2, sTime); Я же вывожу...)
Да, можно выводить string. Ну а string можно любой сгенерить.
Да, все верно. Я отправляю string - в Blynk это выглядит как часы, поскольку обновляется каждые 2 сек..)
---
В общем, разобрался...) Ходил на этот сайт: http://www.joyta.ru/10875-arduino-serial-posledovatelnyj-port/ Но, как оказалось, там не было нужной мне функции(Serial.readStringUntil('<')), и, поэтому, я даже и не догадывался о ее существовании....)
А ларчик то вот как открывался..):
Передаем время:
Принимаем:
Поправочка, мне нужно это было для: Сначала я формирую время в Wemos (в формате 0:00:00) (по возможности синхронизирую его с интернетом, если таковой имеется), если интернета нет, то не беда, пойдет отсчет с 0:00:00...) Далее отправляю эту строку в ардуино, расшифровываю там и отправляю ее обратно в Wemos, а после приема в Wemos - отправляю ее в Blynk. Согласен, мудрено, но так я контролирую зависание не только Wemos, но и ардуино...)) Я, наверное, лопух, но какой уж есть...))
Спасибо за подсказки..)
Так Вы хоите на оригинал, там все функции есть. Чего по помойкам-то шакалить?
Прошел по вашей ссылке, далее кликнул serial: https://www.arduino.cc/reference/en/language/functions/communication/ser... , но там тоже нет данной функции...
Прошел по вашей ссылке, далее кликнул serial: https://www.arduino.cc/reference/en/language/functions/communication/serial/ , но там тоже нет данной функции...
Да, ладно, нет. Всё там есть. Просто, может это Вам пока рановано - руководство более или менее профессионально составлено. Дело в том, что у сериала своей такой функции и не было никогда. Он наследует её от родителя - класса Stream (там внизу самая первая ссылка) кликните - в нём она есть.
И, кстати, раз она есть у Stream, значит есть у всех его потомков - Wire, SoftwareSerial, SD, Ethernet и т.п.
Да, действительно там есть..) Не подготовленному, такому как я, было не в домек искать ее в stream, поскольку в функции этого слова нет, а вот serial есть - вот и, по логике, кликаем туда...))
вот и, по логике, кликаем туда...))
Это не по логике, а по незнанию и непониманию логики построения потоковых классов. Привыкайте, учитесь.
Совершенно верно..) Я хотел сказать, по логике неуча, так точнее будет..)
---
а где бы про эту логику построения почитать на русском и по проще?
Про Hello World есть учебное видео на ютубе. Так и называется "Serial.print("Hello, world!");" - миллион просмотров, между прочим!
А про строку "13:50:23" даже паршивого бложика нету! Ну, и как с ней работать? Вот тем и хуже!
После тщательного поиска в И-нете выяснилось, что можно работать со строками "13:50:12" и "13:50:30". Ничего, что между ними, найти не удаось.
Вывод: строку "13:50:23" передать невозможно (иначе об этом хоть кто-нибудь да написал).