软件总框图
触摸屏单元测试
编写一个main函数,使用下面结构体进行测试
static InputDevice g_tTouchscreenDev = {
.name = "touchscreen",
.GetInputEvent = TouchscreenGetInputEvent,
.DeviceInit = TouchscreenDeviceInit,
.DeviceExit = TouchscreenDeviceExit,
};
main函数部分测试代码:
int main(int argc, char **argv)
{
InputEvent event;
int ret;
g_tTouchscreenDev.DeviceInit();
while (1)
{
ret = g_tTouchscreenDev.GetInputEvent(&event);
if (ret)
{
printf("GetInputEvent err\r\n");
return -1;
}
else
{
printf("iType =%d\r\n", event.iType);
printf("iX =%d\r\n", event.iX);
printf("iY =%d\r\n", event.iY);
printf("iPressure =%d\r\n", event.iPressure);
}
}
return 0;
}
touchscreen.c
#include "input_manager.h"
#include <tslib.h>
#include <stdio.h>
struct tsdev *g_ts;
static int TouchscreenGetInputEvent(PInputEvent ptInputEvent)
{
struct ts_sample samp;
int ret;
ret = ts_read(g_ts, &samp, 1);
if (ret != 1)
return -1;
ptInputEvent->iType = INPUT_TYPE_TOUCH;
ptInputEvent->iX = samp.x;
ptInputEvent->iY = samp.y;
ptInputEvent->iPressure = samp.pressure;
ptInputEvent->tTime = samp.tv;
return 0;
}
static int TouchscreenDeviceInit(void)
{
/* 打开并配置触摸屏设备 */
g_ts = ts_setup(NULL, 0);
if (!g_ts)
{
printf("ts_setup err\n");
return -1;
}
return 0;
}
static int TouchscreenDeviceExit(void)
{
ts_close(g_ts);
return 0;
}
static InputDevice g_tTouchscreenDev = {
.name = "touchscreen",
.GetInputEvent = TouchscreenGetInputEvent,
.DeviceInit = TouchscreenDeviceInit,
.DeviceExit = TouchscreenDeviceExit,
};
#if 1
int main(int argc, char **argv)
{
InputEvent event;
int ret;
g_tTouchscreenDev.DeviceInit();
while (1)
{
ret = g_tTouchscreenDev.GetInputEvent(&event);
if (ret)
{
printf("GetInputEvent err\r\n");
return -1;
}
else
{
printf("iType =%d\r\n", event.iType);
printf("iX =%d\r\n", event.iX);
printf("iY =%d\r\n", event.iY);
printf("iPressure =%d\r\n", event.iPressure);
}
}
return 0;
}
#endif
编译测试:
总结:
增加main.c 内容
- 使用g_tTouchscreenDev.DeviceInit()实现触摸屏设备的初始化。
- 使用g_tTouchscreenDev.GetInputEvent(&event)获取触摸屏输入事件的数据,并打印出坐标、压力和输入事件的类型。