Показать сообщение отдельно
Старый 11.04.2013, 14:55   #10
mas_u
Старший Пользователь
 
Регистрация: 08.05.2011
Регион: Украина
Машина: Subaru
Сообщений: 233
mas_u is on a distinguished road
По умолчанию

Цитата:
Сообщение от s.m. Посмотреть сообщение
а можно подробнее с этого места?
Контроллер avr с АЦП вычисляет нажатия на резистивный тач. Все что намеряли по bluetooth передаем в андроид (spp). В андроиде запущен сервис который принимает данные, маштабирует в зависимости от калибровочных коэффициентов и имитирует нажатие. Параллельно avr сканирует матричную клаву на предмет нажатия кнопок на ней. Если есть нажатие то опять передает в сервис, а тот уже в зависимости от настроек либо запускает установленное приложение, либо имитирует системную или медиа кнопку. Самое сложное оказалось - написать сервис.

До этого пытался использовать bluetooth мышь - по аналогии как это делал с usb мышью. Проблема в том, что в отличии от usb, где в дескрипторе можно было указать 2 байтный сдвиг, в стандартной блютузной доступен только однобайтный - т.е. перемещение максимум +-127 точек. В результате для перемещения на большие растояния необходимо было делать несколько действий. В android 2.3 на табе все было ок - и мышь двигалась как надо, а вот на android 4 и выше зависимость перемещения мыши от кол-ва посылок была явно не линейной. Но я даже вычислил формулу по которой можно было определить необходимое кол-во беспрерывных посылок и их содержимое для перемещения в заданную точку, но этот способ работал не всегда - вероятность была 80-90%.)))) Для 100% точности попадания в заданную точку между посылками необходимо было делать паузы минимум 50ms, в результате если мышь была в одном углу экрана то для ее перемещения в другой требовалось до 300ms - это реально выглядело смешно и бесило.
Приблизительно как тут - http://www.youtube.com/watch?feature...&v=V9AXRAbl-Ws
Плюс к этому - если изменить "Скорость указателя" в настройках андроида то все вычисления будут неправильными.

Последний раз редактировалось mas_u; 11.04.2013 в 15:57.
mas_u вне форума   Ответить с цитированием