littlevgl教程 Linux,[笔记]在嵌入式linux上运行LittlevGL GUI demo 支持tslib

// 1: 添加头文件包含

#include "tslib.h"

// 2: ts结构体声明

struct tsdev *ts;

// 3: 修改初始化代码

void evdev_init(void)

{

#if 0

evdev_fd = open(EVDEV_NAME, O_RDWR | O_NOCTTY | O_NDELAY);

if(evdev_fd == -1) {

perror("unable open evdev interface:");

return;

}

fcntl(evdev_fd, F_SETFL, O_ASYNC | O_NONBLOCK);

#endif

ts = ts_setup(NULL, 1);

if (!ts) {

perror("ts_setup");

return;

//exit(1);

}

evdev_root_x = 0;

evdev_root_y = 0;

evdev_button = LV_INDEV_STATE_REL;

}

// 4:修改读取代码

bool evdev_read(lv_indev_data_t * data)

{

#if 0

struct input_event in;

while(read(evdev_fd, &in, sizeof(struct input_event)) > 0) {

if(in.type == EV_REL) {

if(in.code == REL_X)

#if EVDEV_SWAP_AXES

evdev_root_y += in.value;

#else

evdev_root_x += in.value;

#endif

else if(in.code == REL_Y)

#if EVDEV_SWAP_AXES

evdev_root_x += in.value;

#else

evdev_root_y += in.value;

#endif

} else if(in.type == EV_ABS) {

if(in.code == ABS_X)

#if EVDEV_SWAP_AXES

evdev_root_y = in.value;

#else

evdev_root_x = in.value;

#endif

else if(in.code == ABS_Y)

#if EVDEV_SWAP_AXES

evdev_root_x = in.value;

#else

evdev_root_y = in.value;

#endif

} else if(in.type == EV_KEY) {

if(in.code == BTN_MOUSE || in.code == BTN_TOUCH) {

if(in.value == 0)

evdev_button = LV_INDEV_STATE_REL;

else if(in.value == 1)

evdev_button = LV_INDEV_STATE_PR;

}

}

}

#endif

// tslib

struct ts_sample samp;

int ret;

/* 修改自tslib ts_print.c */

while (ts_read(ts, &samp, 1) == 1) {

printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure);

#if EVDEV_SWAP_AXES

evdev_root_x = samp.y;

evdev_root_y = samp.x;

#else

evdev_root_x = samp.x;

evdev_root_y = samp.y;

#endif

if(samp.pressure == 0)

evdev_button = LV_INDEV_STATE_REL;      //抬起

else if(samp.pressure == 255)

evdev_button = LV_INDEV_STATE_PR;

}

/*Store the collected data*/

#if EVDEV_SCALE

data->point.x = map(evdev_root_x, 0, EVDEV_SCALE_HOR_RES, 0, LV_HOR_RES);

data->point.y = map(evdev_root_y, 0, EVDEV_SCALE_VER_RES, 0, LV_VER_RES);

#else

#if EVDEV_CALIBRATE

data->point.x = map(evdev_root_x, EVDEV_HOR_MIN, EVDEV_HOR_MAX, 0, LV_HOR_RES);

data->point.y = map(evdev_root_y, EVDEV_VER_MIN, EVDEV_VER_MAX, 0, LV_VER_RES);

#else

data->point.x = evdev_root_x;

data->point.y = evdev_root_y;

#endif

#endif

data->state = evdev_button;

if(data->point.x < 0)

data->point.x = 0;

if(data->point.y < 0)

data->point.y = 0;

if(data->point.x >= LV_HOR_RES)

data->point.x = LV_HOR_RES - 1;

if(data->point.y >= LV_VER_RES)

data->point.y = LV_VER_RES - 1;

return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值