加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

基于LPC55S69学习GUI-Guider软件分享三——lvgl输入设备模拟

05/14 14:04
3926
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

继上次移植了GUI-Guider生成的GUI界面后,显示没什么问题了。但是只有显示,不能操作,看起来还是不完整。这次就分享如何移植输入设备,可以点击和移动操作。

输入设备移植文件主要是这个。如图,可以看到lvgl支持触摸指针设备,鼠标,键盘,encoder,button。

本次是通过串口方式发送数据模拟触摸指针设备。下面是主要修改步骤。

串口接收6个字节,定义结构体变量映射6个字节。代码如下。

主要是初始化,获取点击状态,获取x,y坐标这3个函数。

extern union Indev_uart_data
{
struct
{
uint8_t flag;
uint8_t press;
uint16_t x;
uint16_t y;
}touch;
uint8_t buff[6];
}g_input;

/*------------------
* Touchpad
* -----------------*/

/*Initialize your touchpad*/
static void touchpad_init(void)
{
/*Your code comes here*/
memset(g_input.buff, 0, sizeof(g_input.buff));
}

/* Will be called by the library to read the touchpad */
static bool touchpad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data)
{
static lv_coord_t last_x = 0;
static lv_coord_t last_y = 0;

/*Save the pressed coordinates and the state*/
if(touchpad_is_pressed()) {
touchpad_get_xy(&last_x, &last_y);
data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}

/*Set the last pressed coordinates*/
data->point.x = last_x;
data->point.y = last_y;

/*Return `false` because we are not buffering and no more data to read*/
return false;
}

/*Return true is the touchpad is pressed*/
static bool touchpad_is_pressed(void)
{
/*Your code comes here*/
if((g_input.touch.flag == 'T')&&(g_input.touch.press))
{
return true;
}
return false;
}

/*Get the x and y coordinates if the touchpad is pressed*/
static void touchpad_get_xy(lv_coord_t * x, lv_coord_t * y)
{
/*Your code comes here*/
if(g_input.touch.flag == 'T')
{
(*x) = g_input.touch.x;
(*y) = g_input.touch.y;
}
}

然后就是主函数中调用输入设备初始化。

主循环通过串口接收数据,模拟触摸指针设备。注意串口接收使用非阻塞方式。

下面是通过串口助手发送数据效果,可以看到指针位置。

具体参考如下代码:lpc55s69_lcd.rar (7.49 MB, 点击下方附件下载)

  • lpc55s69_lcd.rar

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ASDMB-26.000MHZ-LY-T 1 Abracon Corporation MEMS OSC XO 26.0000MHZ LVCMOS
$2.05 查看
ASDMB-24.576MHZ-LC-T 1 Abracon Corporation MEMS OSC XO 24.5760MHZ LVCMOS

ECAD模型

下载ECAD模型
$2.15 查看
ISO1042DWV 1 Texas Instruments Isolated CAN transceiver with 70-V bus fault protection & flexible data rate 8-SOIC -40 to 125

ECAD模型

下载ECAD模型
暂无数据 查看

相关推荐

电子产业图谱