硬汉嵌入式论坛

 找回密码
 立即注册
查看: 146|回复: 3
收起左侧

[ThreadX全家桶] GUIX不使用触摸,使用实体轻触按键要怎么做呢?

[复制链接]

2

主题

38

回帖

44

积分

新手上路

积分
44
发表于 2024-4-30 11:19:51 | 显示全部楼层 |阅读模式
请教一下硬汉:GUIX不使用触摸,使用实体轻触按键要怎么做呢?
回复

使用道具 举报

4

主题

30

回帖

42

积分

新手上路

积分
42
发表于 2024-4-30 13:22:04 | 显示全部楼层
[C] 纯文本查看 复制代码
#include <rtthread.h>
#include "include.h"
 
#define DBG_TAG "options_menu"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
 
static rt_uint8_t options_now = GX_PIXELMAP_ID_OPTIONS_CHECK;
 
static void options_menu_changed(rt_uint8_t mode)
{
    if (mode)
        options_now++;
    else
        options_now--;
 
    if (options_now > GX_PIXELMAP_ID_OPTIONS_SET)
        options_now = GX_PIXELMAP_ID_OPTIONS_CHECK;
    else if (options_now < GX_PIXELMAP_ID_OPTIONS_CHECK)
        options_now = GX_PIXELMAP_ID_OPTIONS_SET;
 
    gx_icon_pixelmap_set(&window_menu.window_menu_options_icon, options_now, GX_NULL);
    gx_prompt_text_id_set(&window_menu.window_menu_menu_text, options_now - GX_PIXELMAP_ID_OPTIONS_CHECK + 1);
}
 
static void task_options_menu_key_event_handler(void *arg)
{
    flex_button_t *btn = (flex_button_t *)arg;
    /********************* btn1 ***********************/
    if (btn->id == USER_BUTTON_1)
    {
        switch (btn->event)
        {
        case FLEX_BTN_PRESS_SHORT_UP:
            options_menu_changed(0);
            break;
        }
    }
 
    /********************* btn2 ***********************/
    else if (btn->id == USER_BUTTON_2)
    {
        if (btn->event == FLEX_BTN_PRESS_SHORT_UP)
        {
            switch (options_now)
            {
            case GX_PIXELMAP_ID_OPTIONS_CHECK:
                user_system.state = STATE_MEASURING;
                break;
 
            case GX_PIXELMAP_ID_OPTIONS_LOG:
                user_system.state = STATE_LOG;
                break;
 
            case GX_PIXELMAP_ID_OPTIONS_SET:
                user_system.state = STATE_SET;
                break;
            }
        }
    }
 
    /********************* btn3 ***********************/
    else if (btn->id == USER_BUTTON_3)
    {
        switch (btn->event)
        {
        case FLEX_BTN_PRESS_SHORT_UP:
            options_menu_changed(1);
            break;
        }
    }
 
    default_btn_evt_cb(arg);
}
 
void task_options_menu(void)
{
    LOG_W("in task_options_menu...");
 
    window_jump((GX_WIDGET *)&window_main, GX_USER_EVENT_IN_MENU);
 
    button_callback_set(task_options_menu_key_event_handler);
 
    while (user_system.state == STATE_OPTIONS_MENU)
    {
        rt_thread_mdelay(10);
    }
 
    window_jump((GX_WIDGET *)&window_menu, GX_USER_EVENT_OUT_MENU);
    LOG_W("exit task_options_menu...");
}
回复

使用道具 举报

2

主题

38

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2024-4-30 14:29:28 | 显示全部楼层
非常谢谢,先好好研究一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2024-4-30 14:36:13 | 显示全部楼层
gx_system_event_send发送按键消息即可

ThreadX GUIX实现摄像头图像动态更新的关键说明
https://www.armbbs.cn/forum.php? ... 0516&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 02:22 , Processed in 0.268745 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表