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

Ответить
Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#1

Сообщение Ingwar » 20.11.2015{, 11:25}

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

Naum
Рядовой
Сообщения: 39
Зарегистрирован: 14.09.2015{, 00:05}
Репутация: 0

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

#2

Сообщение Naum » 21.11.2015{, 08:24}

довольно интересный проект тоже начал этим заниматься если скинешь Посмотрим может быть что-нибудь и помогу.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#3

Сообщение Ingwar » 21.11.2015{, 21:20}

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

Naum
Рядовой
Сообщения: 39
Зарегистрирован: 14.09.2015{, 00:05}
Репутация: 0

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

#4

Сообщение Naum » 21.11.2015{, 21:39}

Я тоже сейчас учусь по этим уроком
мне тяжело говорить о том что я не могу пощупать и посмотреть но напрашивается идея Выполняеть всю обработку в Андроиде и посылать только команды на Arduino или сделать какую-то обратную связь для подтверждение команд

Аватара пользователя
Skull
Лейтенант
Сообщения: 424
Зарегистрирован: 08.09.2015{, 16:18}
Репутация: 4
Откуда: Мариуполь

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

#5

Сообщение Skull » 21.11.2015{, 22:29}

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

Ответить

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