Вопрос по работе с библиотекой Serial.

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Аватара пользователя
Viper_Snake
Электрический кот
Сообщения: 1046
Зарегистрирован: Вс мар 01, 2009 19:47:16
Откуда: Ростов-на-Дону

Вопрос по работе с библиотекой Serial.

Сообщение Viper_Snake »

Приветствую всех, есть некая железка, под названием датчик озона. Эта железка при работе каждую секунду выплевывает по уарт пачку из 9 байт. Как организована работа с буфером в библиотеке Serial? Надо ли очищать буфер после чтения командой Serial readили это происходит автоматом? Данные я считываю нормально, но есть подозрения в корректности моего подхода. Мой алгоритм следующий:
Проверяю, прилетели ли все 9 байт командой available
С помощью цикла for вычитываю каждый байт в массив
Обрабатываю данные из массива.

Добавлено after 2 minutes 57 seconds:
Вот что то мне подсказывает, что буфер надо подчищать после этого, но нигде не расписано, как это правильно работает... По крайней мере я не нашел. Аппаратного UART у меня в контроллере нет, городить самопал смысла тоже нет, так что буду пользоваться готовым, но есть нюансы.

Добавлено after 1 second:
Вот что то мне подсказывает, что буфер надо подчищать после этого, но нигде не расписано, как это правильно работает... По крайней мере я не нашел. Аппаратного UART у меня в контроллере нет, городить самопал смысла тоже нет, так что буду пользоваться готовым, но есть нюансы.

Добавлено after :
Вот что то мне подсказывает, что буфер надо подчищать после этого, но нигде не расписано, как это правильно работает... По крайней мере я не нашел. Аппаратного UART у меня в контроллере нет, городить самопал смысла тоже нет, так что буду пользоваться готовым, но есть нюансы.
Не важно чем все начнется. Важно чем кончится!
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопрос по работе с библиотекой Serial.

Сообщение BOB51 »

Смотри работу с Serial или на сайте ардуино (раздел описания функций библиотек онлайн) или (более детально) у AlexGyver тут:
https://alexgyver.ru/lessons/
(соответствующие разделы уроков и/или *.pdf версию скачать можно)
8)
Реклама
Аватара пользователя
Viper_Snake
Электрический кот
Сообщения: 1046
Зарегистрирован: Вс мар 01, 2009 19:47:16
Откуда: Ростов-на-Дону

Re: Вопрос по работе с библиотекой Serial.

Сообщение Viper_Snake »

Там нет ответа на мой вопрос. Нигде не описано, что происходит с данными в буфере после их чтения.
Не важно чем все начнется. Важно чем кончится!
ELECTROS
Открыл глаза
Сообщения: 68
Зарегистрирован: Пт ноя 11, 2016 09:17:49

Re: Вопрос по работе с библиотекой Serial.

Сообщение ELECTROS »

read читает из очереди с уменьшением размера, если нечего читать то -1, peek - только чтение. available - текущее количество байт в буфере. Впрочем это всё написанно на сайте дурдуины, стоит лишь почитать.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
smacorp
Друг Кота
Сообщения: 3481
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Re: Вопрос по работе с библиотекой Serial.

Сообщение smacorp »

Не, нужно очищать обязательно. Особенно в случае аппаратного UART. Это как с банкой - если она полная, больше в неё уже не насыпать, байты будут через край вываливаться. :facepalm:
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопрос по работе с библиотекой Serial.

Сообщение BOB51 »

При наличии данных в буфере выполняется чтение и последующий анализ данных.
Если не соответствует ожидаемому значению - данные игнорируются программой.
И так пока все содержимое не будет считает.
Буфер работает по принципу -
первым вошёл, первым и считан.
В принципе "ложный мусор" вполне легко отбрасывается.
:roll:
Для ардуино есть еще библиотека
SoftwareSerial... Правда на МК без аппаратного модуля я не пробовал, но на нанке вполне удобно работает вторым портом.
:roll:
Реклама
Ответить

Вернуться в «Arduino»