BeagleBoard-xM のandroid GengerbreadでHM-TL10Tのタッチパネルの制御に成功しました。
有名な
先駆者のおかげです。
ただ、タッチの座標ががx座標もy座標もまるっきり逆方向に入れ替わっている結果になりました。
入力座標が時計回りに180度回転しています。
試しに、初期値の座標を入れ替えましたが、全く反応しなくなりました。
座標の初期値は、正しいことが分かりました。
そこで、入力座標から移動量を計算する関数を変更することにしました。
#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH
static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
{
//dev->x = (pkt[2] << 8) | pkt[1];
//dev->y = (pkt[4] << 8) | pkt[3];
//dev->press = pkt[5] & 0xff;
//dev->touch = pkt[0] & 0x01;
dev->x = 0x0f92-(pkt[5] << 8) | pkt[4]; //これに変更しました。
dev->y = (pkt[3] << 8) | pkt[2]; //これに変更しました。
//dev->x = ((pkt[5] & 0x0F) << 8) | (pkt[4] & 0xFF);
//dev->y = ((pkt[3] & 0x0F) << 8) | (pkt[2] & 0xFF);
//dev->y = 2 * 0x07c8 - dev->y;
dev->touch = pkt[1] & 0x01;
return 1;
}
#endif
入力座標と画面が同じになり、正しく動作するようになりました。
タッチパネル入力のandroidマシンとなれました。
非常にうれしいです。