Страница 1 из 1

Прием данных через последовательный порт

Добавлено: 20.11.2015{, 11:25}
Ingwar
Доброе время суток, читающие.
Есть трудность приема непрерывных данных. Если вкратце - программка на телефоне передает значение ползунка через блютуз. При передвижении иногда теряются данные. Я так понимаю из за не оптимизированного кода (как впрочем и все объектно ориентированные). Пытаюсь принять N символов из порта (длина передаваемого значения) и сохранять их в переменной. В начале передаваемой строки использую значение как адрес.
Фрагменты программ ниже. Убирая дисплей - теряем меньше данных. Есть предложения по оптимизации учитывая, что исп. устройств будет больше?

Прием данных через последовательный порт

Добавлено: 21.11.2015{, 08:24}
Naum
довольно интересный проект тоже начал этим заниматься если скинешь Посмотрим может быть что-нибудь и помогу.

Прием данных через последовательный порт

Добавлено: 21.11.2015{, 21:20}
Ingwar
Так скидывать нечего)). Программка для телефона подсмотрена на ютубе у Dmitry OSIPOV. Только упрощена чуть. Скрин всех моих блоков приложил ниже.
Что касается ардуинки, то из последовательного порта принимаю подряд символы, как только длина строки равна 4ем, записываю всю строку в переменную (Data) и обнуляю буфер приема в порту. Потом из записанной строки вытаскиваю первых 2 символа, перевожу их в число, сравниваю его с константами и команда с компаратора дает разрешение на соответствующий выход. Из этой же строки вытаскиваю символы начиная с 3го и до конца, перевожу в числа и после обработки подаю на соотв. выходы.
А проблема бывает в том, что принимаемые символы ардуинка не всегда успевает обработать и они теряются. Это может отразится на том, что записываемые в переменную строки не всегда начинаются с нужных символов и может произвольно сработать нерегулируемый выход. Т. е. если нормальная строка допустим 4060, то согласно блок схеме, число 60 после обработки попадает на серво-привод. Но бывает теряются первые 2 знака и в буфер попадает 60 с первой пачки и начальные 40 со следующей. Как следствие - число 40 попадает на выход ШИМ, хотя вы сами туда данные не отсылали... Забавно то, что каким то неведомым для меня способом, пропустив знаки, контроллер все равно позволяет управлять исполнительным устройством, команды на который вы передаете. Отследить что на самом деле происходит с числами и строками невозможно, поскольку добавление экрана усугубляет ситуацию.
Не пробовал контролить через компорт. Последовательный порт для приема данных использую софтовый (лень вынимать проводки при прошивке). Надеялся, что кто-нить уже сталкивался с похожим...))

Прием данных через последовательный порт

Добавлено: 21.11.2015{, 21:39}
Naum
Я тоже сейчас учусь по этим уроком
мне тяжело говорить о том что я не могу пощупать и посмотреть но напрашивается идея Выполняеть всю обработку в Андроиде и посылать только команды на Arduino или сделать какую-то обратную связь для подтверждение команд

Прием данных через последовательный порт

Добавлено: 21.11.2015{, 22:29}
Skull
Хорошая прога. Тоже мучаю потихоньку. пробовал прикрутить к умному дому, вроде получается. App Inventor называется. Теперь доступен и на русском языке.
Вот мой проект по вкл\выкл света и считыванию температуры и влажности