![]() |
Я сейчас занят сильно, нет времени гуглить, обрати внимание:
по ссылке http://source.android.com/tech/input/touch-devices.html в конце есть ссылки: Linux multi-touch protocol ENAC list of available multitouch devices on Linux Мне все таки кажется что там тоже может быть полезная информация. |
Вот еще масса информации: 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 |
Товарищи! Работает!
Как световое перо работает и на Андроиде тоже! Вот с таким дескриптором. Данные отчета такие: 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; //должно быть нулем. Я еще поэкспериментирую, вроде как последние три поля из дескриптора и, соответственно, отчета можно изъять. В общем, скоро будет готов контроллер резистивного тача, совместимый с Андроид! |
Вот и результат: http://www.pccar.ru/showthread.php?t=18943
Отдельное спасибо VVi3ard, благодаря его ссылке на touch screen class device было сэкономлено уйма времени. |
Цитата:
если не будет секретом принцип работы калибровочной утилиты - могу написать такую под андроид - решение будет законченным (непонятно сейчас, как будет виден калибровочный порт под андроидом) |
Вложений: 1
Цитата:
|
Цитата:
В Андроиде устройство видится как /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 - значения измерений, получаемых с АЦП. Этой информации, как мне кажется, достаточно чтобы написать калибровочную утилиту. Если остались вопросы, спрашивай. |
Цитата:
|
Цитата:
Не хотите написать свою статью на HABR? Я думаю вы в процессе разработки убедились что в рунете информации по данной теме нет, и ваша статья на хабре многим бы помогла. Плюс возможно там найдется 1-2 человека которые смогут помочь улучшить вашу разработку. Ведь для многих CARPC шников вопрос подключения штатного тача весьма актуален. |
а разве такой контроллер не работает в ондроеде?
|
Часовой пояс GMT +4, время: 08:55. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot