![]() |
|
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Старший Пользователь
![]() Регистрация: 05.12.2012
Возраст: 42
Регион: 78, 98
Сообщений: 433
![]() |
![]() Я сейчас занят сильно, нет времени гуглить, обрати внимание:
по ссылке http://source.android.com/tech/input/touch-devices.html в конце есть ссылки: Linux multi-touch protocol ENAC list of available multitouch devices on Linux Мне все таки кажется что там тоже может быть полезная информация. |
![]() |
![]() |
![]() |
#22 |
Старший Пользователь
![]() Регистрация: 05.12.2012
Возраст: 42
Регион: 78, 98
Сообщений: 433
![]() |
![]() Вот еще масса информации: http://www.usb.org/developers/hidpage
Нужно смотреть твой код который реализует HID класс "Мышь" возможно там есть комментарии по настройке для другого класса. Вот от туда инфа от MS http://msdn.microsoft.com/ru-RU/libr.../gg487435.aspx http://msdn.microsoft.com/en-us/libr.../gg487437.aspx |
![]() |
![]() |
![]() |
#23 |
Старший Пользователь
![]() Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
![]() ![]() ![]() ![]() ![]() ![]() |
![]() Товарищи! Работает!
Как световое перо работает и на Андроиде тоже! Вот с таким дескриптором. Данные отчета такие: uint16_t flags; //чтобы не ошибится, позже расшифрую. здесь закодировано прикосновение и наличие пера в поле видимости int16_t X; //от 0 до 32767 координата Х int16_t Y; //от 0 до 32767 координата Y int16_t Width; //Width of contact int16_t Height; //Height of contact int16_t Const; //должно быть нулем. Я еще поэкспериментирую, вроде как последние три поля из дескриптора и, соответственно, отчета можно изъять. В общем, скоро будет готов контроллер резистивного тача, совместимый с Андроид!
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо ![]() |
![]() |
![]() |
![]() |
#24 |
Старший Пользователь
![]() Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
![]() ![]() ![]() ![]() ![]() ![]() |
![]() Вот и результат: http://www.pccar.ru/showthread.php?t=18943
Отдельное спасибо VVi3ard, благодаря его ссылке на touch screen class device было сэкономлено уйма времени.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо ![]() |
![]() |
![]() |
![]() |
#25 | |
Гуру
![]() Регистрация: 20.07.2009
Город: Минск
Регион: Беларусь
Сообщений: 1,543
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
если не будет секретом принцип работы калибровочной утилиты - могу написать такую под андроид - решение будет законченным (непонятно сейчас, как будет виден калибровочный порт под андроидом)
__________________
Мой проект: Citroen Xsara Android CarPC |
|
![]() |
![]() |
![]() |
#26 |
Старший Пользователь
![]() Регистрация: 08.05.2011
Регион: Украина
Машина: Subaru
Сообщений: 233
![]() |
![]() Описание алгоритма для калибровки. Минимальное кол-во точек для калибровки - 3.
|
![]() |
![]() |
![]() |
#27 | |
Старший Пользователь
![]() Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
В Андроиде устройство видится как /dev/ttyACM0 (точнее не само устройство, а виртуальный последовательный порт в его составе) Протокол очень простой и примитивный: Пакет: word - 0xFFFF - сигнатура byte - 0x01 - признак версии byte - cmd - команда тут могут быть данные, если того требует команда byte - crc - контрольная сумма - xor всех предыдущих байт пакета в ответ придут данные, если они предусмотрены командой и один байт - 0х00 - ошибок нет, 0хFF - что-то не так. Команды следующие: 0х01 - получить номер версии. В ответ на эту команду придет только один байт - 0х01 без закрывающего нуля. Это команда для проверки того, что мы подключились к правильному устройству. 0х0A - Получить состояние. В ответ придут: byte x - последнее измеренное значение по оси Х byte y - последнее измеренное значение по оси Y byte touched - 1 - в данный момент есть прикосновение, 0 - прикосновения нет и закрывающий 0. 0x0B - Выключить мышь. Нужно подавать эту команду перед калибровкой. Устройство перестанет передавать прикосновения в компьютер. Данные можно будет получить только по последовательному порту. В ответ придет только один байт - 0х00 0х0С - Включить мышь. Выдавать после окончания калибровки. В ответ придет только один байт - 0х00 0х0D - Записать калибровочные данные: int32 - kx int32 - ky byte - dx byte - dy word - xsize word - ysize не забываем про crc. В ответ придет один байт - 0х00. Общий порядок калибровки: 1) Выключаем мышь, командой 0х0В 2) Просим пользователя прикоснуться куда-нибудь в верхний левый угол, и в цикле считываем значения измерений x и y командой 0х0А. В зачет идут только те результаты, в которых флаг touch = 1. На основе нескольких десятков измерений, вычисляем средний x и y. 3) Повторяем процедуру для правого нижнего угла. На основе полученных данных, вычисляем dx,dy,kx,ky. (xsize и ysize задуманы для передачи контроллеру размеров экрана, но на данный момент не используются.) 4) Записываем результаты в контроллер, командой 0х0D 5) Включаем мышь командой 0х0С. Теперь о том, что такое dx, dy, kx, ky. Устройство посылает в компьютер отчет, который содержит координаты X и Y в виде чисел от 0 до 32767. При этом, 0 соответствует самой левой части экрана (или самой верхней), 32767 - самой правой части экрана (или самой нижней). Нужно пересчитать значения от 0 до 255, полученные с АЦП в числа от 0 до 32767, передаваемые в компьютер. Формула в контроллер заложена такая. X = kx*(adc_x - dx)/65536 Y = ky*(adc_y - dy)/65536 где Х,Y - числа от 0 до 32767, передаваемые в компьютер adc_x, adc_y - значения измерений, получаемых с АЦП. Этой информации, как мне кажется, достаточно чтобы написать калибровочную утилиту. Если остались вопросы, спрашивай.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо ![]() |
|
![]() |
![]() |
![]() |
#28 |
Старший Пользователь
![]() Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
![]() ![]() ![]() ![]() ![]() ![]() |
![]() Это так. Я указал, что проект не совсем закончен, но уже работоспособен. Я упростил калибровку сознательно, исходя из следующего: При таком низком разрешении измерений (8 бит) отклонение в параллельности сенсорной панели и экрана не заметно. Т.е., принимаем как константу, что сенсорная панель параллельна экрану. И, так как мы не собираемся компенсировать поворот сенсорной панели относительно экрана, достаточно двух точек калибровки.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо ![]() |
![]() |
![]() |
![]() |
#29 | |
Старший Пользователь
![]() Регистрация: 05.12.2012
Возраст: 42
Регион: 78, 98
Сообщений: 433
![]() |
![]() Цитата:
![]() Не хотите написать свою статью на HABR? Я думаю вы в процессе разработки убедились что в рунете информации по данной теме нет, и ваша статья на хабре многим бы помогла. Плюс возможно там найдется 1-2 человека которые смогут помочь улучшить вашу разработку. Ведь для многих CARPC шников вопрос подключения штатного тача весьма актуален. |
|
![]() |
![]() |
![]() |
#30 |
Старший Пользователь
![]() Регистрация: 22.10.2012
Регион: 78, 98
Сообщений: 758
![]() ![]() ![]() ![]() |
![]() а разве такой контроллер не работает в ондроеде?
__________________
В работе Китайнедожып+медиацентр на андроиде |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
|
|