Показать сообщение отдельно
Старый 15.08.2013, 14:56   #41
Different234
Пользователь
 
Регистрация: 02.08.2013
Возраст: 36
Город: Нижний Новгород
Регион: 52
Машина: Acura RDX
Сообщений: 64
Different234 has a spectacular aura aboutDifferent234 has a spectacular aura about
По умолчанию

У меня получилось все, как раз планирую свой бортовой журнал сделать. Причем у меня вообще не работало из коробки, ни в версии 1.6 ни 1.7, пришлось собирать ядро и включать поддержку egalax, потом оказалось что файл eGalax_Inc__Touch.idc не воспринимался системой и тач работал как мышка, пришлось переделал файл на Vendor_0eef_Product_0001.idc, кстати правильные права на эти файлы 644. После этого завелось, но была инверсия оси Y. Т.к. до этого удалось найти нормальные границы экрана, нажатием стилуса в самые углы и просмотра лога через getevent -tl, параметры вкомпилил в ядро. Инверсию тача победил по формуле (maxy+minY)-((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F)) Весь подправленный код см ниже.

Цитата:
static int egalax_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
{
<------>if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT)
<------><------>return 0;

<------>dev->x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F);
<------>dev->y = 2036 - (((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F));
<------>dev->touch = pkt[0] & 0x01;

<------>return 1;
}
Цитата:
static struct usbtouch_device_info usbtouch_dev_info[] = {
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
<------>[DEVTYPE_EGALAX] = {
<------><------>.min_xc><------>= 0x0040,
<------><------>.max_xc><------>= 0x07bd,
<------><------>.min_yc><------>= 0x00a6,
<------><------>.max_yc><------>= 0x074e,
<------><------>.rept_size<---->= 8,
<------><------>.process_pkt<-->= usbtouch_process_multi,
<------><------>.get_pkt_len<-->= egalax_get_pkt_len,
<------><------>.read_data<---->= egalax_read_data,
<------>},
#endif
Different234 вне форума   Ответить с цитированием