Доброе время суток, читающие.
Есть трудность приема непрерывных данных. Если вкратце - программка на телефоне передает значение ползунка через блютуз. При передвижении иногда теряются данные. Я так понимаю из за не оптимизированного кода (как впрочем и все объектно ориентированные). Пытаюсь принять N символов из порта (длина передаваемого значения) и сохранять их в переменной. В начале передаваемой строки использую значение как адрес.
Фрагменты программ ниже. Убирая дисплей - теряем меньше данных. Есть предложения по оптимизации учитывая, что исп. устройств будет больше?
Прием данных через последовательный порт
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Прием данных через последовательный порт
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Ingwar 20 ноя 2015, 17:12, всего редактировалось 1 раз.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Прием данных через последовательный порт
довольно интересный проект тоже начал этим заниматься если скинешь Посмотрим может быть что-нибудь и помогу.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Прием данных через последовательный порт
Так скидывать нечего)). Программка для телефона подсмотрена на ютубе у Dmitry OSIPOV. Только упрощена чуть. Скрин всех моих блоков приложил ниже.
Что касается ардуинки, то из последовательного порта принимаю подряд символы, как только длина строки равна 4ем, записываю всю строку в переменную (Data) и обнуляю буфер приема в порту. Потом из записанной строки вытаскиваю первых 2 символа, перевожу их в число, сравниваю его с константами и команда с компаратора дает разрешение на соответствующий выход. Из этой же строки вытаскиваю символы начиная с 3го и до конца, перевожу в числа и после обработки подаю на соотв. выходы.
А проблема бывает в том, что принимаемые символы ардуинка не всегда успевает обработать и они теряются. Это может отразится на том, что записываемые в переменную строки не всегда начинаются с нужных символов и может произвольно сработать нерегулируемый выход. Т. е. если нормальная строка допустим 4060, то согласно блок схеме, число 60 после обработки попадает на серво-привод. Но бывает теряются первые 2 знака и в буфер попадает 60 с первой пачки и начальные 40 со следующей. Как следствие - число 40 попадает на выход ШИМ, хотя вы сами туда данные не отсылали... Забавно то, что каким то неведомым для меня способом, пропустив знаки, контроллер все равно позволяет управлять исполнительным устройством, команды на который вы передаете. Отследить что на самом деле происходит с числами и строками невозможно, поскольку добавление экрана усугубляет ситуацию.
Не пробовал контролить через компорт. Последовательный порт для приема данных использую софтовый (лень вынимать проводки при прошивке). Надеялся, что кто-нить уже сталкивался с похожим...))
Что касается ардуинки, то из последовательного порта принимаю подряд символы, как только длина строки равна 4ем, записываю всю строку в переменную (Data) и обнуляю буфер приема в порту. Потом из записанной строки вытаскиваю первых 2 символа, перевожу их в число, сравниваю его с константами и команда с компаратора дает разрешение на соответствующий выход. Из этой же строки вытаскиваю символы начиная с 3го и до конца, перевожу в числа и после обработки подаю на соотв. выходы.
А проблема бывает в том, что принимаемые символы ардуинка не всегда успевает обработать и они теряются. Это может отразится на том, что записываемые в переменную строки не всегда начинаются с нужных символов и может произвольно сработать нерегулируемый выход. Т. е. если нормальная строка допустим 4060, то согласно блок схеме, число 60 после обработки попадает на серво-привод. Но бывает теряются первые 2 знака и в буфер попадает 60 с первой пачки и начальные 40 со следующей. Как следствие - число 40 попадает на выход ШИМ, хотя вы сами туда данные не отсылали... Забавно то, что каким то неведомым для меня способом, пропустив знаки, контроллер все равно позволяет управлять исполнительным устройством, команды на который вы передаете. Отследить что на самом деле происходит с числами и строками невозможно, поскольку добавление экрана усугубляет ситуацию.
Не пробовал контролить через компорт. Последовательный порт для приема данных использую софтовый (лень вынимать проводки при прошивке). Надеялся, что кто-нить уже сталкивался с похожим...))
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Прием данных через последовательный порт
Я тоже сейчас учусь по этим уроком
мне тяжело говорить о том что я не могу пощупать и посмотреть но напрашивается идея Выполняеть всю обработку в Андроиде и посылать только команды на Arduino или сделать какую-то обратную связь для подтверждение команд
мне тяжело говорить о том что я не могу пощупать и посмотреть но напрашивается идея Выполняеть всю обработку в Андроиде и посылать только команды на Arduino или сделать какую-то обратную связь для подтверждение команд
Прием данных через последовательный порт
Хорошая прога. Тоже мучаю потихоньку. пробовал прикрутить к умному дому, вроде получается. App Inventor называется. Теперь доступен и на русском языке.
Вот мой проект по вкл\выкл света и считыванию температуры и влажности
Вот мой проект по вкл\выкл света и считыванию температуры и влажности
Последний раз редактировалось Skull 21 ноя 2015, 22:36, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя