硬汉嵌入式论坛

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

[ThreadX全家桶] 有不有GUIX的实体按键的例程?

[复制链接]

19

主题

125

回帖

182

积分

初级会员

积分
182
发表于 2024-4-4 22:47:23 | 显示全部楼层 |阅读模式
如题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-5 10:00:41 | 显示全部楼层
这个里面摄像头的例子,看DMCI中断的消息通知方式即可,实体按键也是用的这个方式。

https://www.armbbs.cn/forum.php? ... &extra=page%3D1
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-5 16:02:58 | 显示全部楼层
eric2013 发表于 2024-4-5 10:00
这个里面摄像头的例子,看DMCI中断的消息通知方式即可,实体按键也是用的这个方式。

https://www.armbbs ...

GUIX, 屏幕上能不能分区域显示多个window?几个窗口分区显示在一个界面上。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-6 08:10:16 | 显示全部楼层
ccschen 发表于 2024-4-5 16:02
GUIX, 屏幕上能不能分区域显示多个window?几个窗口分区显示在一个界面上。

可以的,句柄不同。

多窗口创建可以使用GUIX Studio完成。
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-6 23:33:50 | 显示全部楼层
eric2013 发表于 2024-4-6 08:10
可以的,句柄不同。

多窗口创建可以使用GUIX Studio完成。

[C] 纯文本查看 复制代码
	gx_studio_named_widget_create("window_root", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen);
	gx_studio_named_widget_create("window_language", (GX_WIDGET *)GX_NULL, (GX_WIDGET **)GX_NULL);	
	gx_widget_attach((GX_WIDGET *)root, &window_language);

/* 显示根窗口 */
	gx_widget_show(root);
/* 启动GUIX */
	gx_system_start();

//定时器到了后,删除启动画面,然后显示状态条
	gx_widget_delete((GX_WIDGET **)&window_language);
	gx_studio_named_widget_create("window_status_bar", (GX_WIDGET *)root,  (GX_WIDGET **)GX_NULL);	
	gx_widget_attach((GX_WIDGET *)root, &window_status_bar);


结果状态条不显示。

UI打算这样做,先启动画面,启动画面显示完后,启动画面窗口就删除。然后进入主界面,主界面由桌面和状态条两个窗口并列显示。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-7 08:01:50 | 显示全部楼层
ccschen 发表于 2024-4-6 23:33
[mw_shl_code=c,true]        gx_studio_named_widget_create("window_root", (GX_WIDGET *)root, (GX_WIDGET ** ...

这种的切换效果,完全可以使用GUIX Studio的Screen Flow设计正常后,添加到你的工程。
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-7 09:09:19 | 显示全部楼层
eric2013 发表于 2024-4-7 08:01
这种的切换效果,完全可以使用GUIX Studio的Screen Flow设计正常后,添加到你的工程。

设计器能模拟物理按键操作?物理按键不是键盘这种规范的ASCII码值的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-8 07:55:18 | 显示全部楼层
ccschen 发表于 2024-4-7 09:09
设计器能模拟物理按键操作?物理按键不是键盘这种规范的ASCII码值的。

设计的时候用GUIX Studio,设计完毕移植到工程里面,将其修改为按键触发。
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-14 22:48:52 | 显示全部楼层
eric2013 发表于 2024-4-8 07:55
设计的时候用GUIX Studio,设计完毕移植到工程里面,将其修改为按键触发。

按键检测不太灵光,很多时候不响应。。。FREERTOS里就没这种情况,看了寄存器,IO口确实电平变了。

[C] 纯文本查看 复制代码
void button_key_thread_entry(ULONG thread_input)
{
	(void)thread_input;
	
	user_button_init();
	while (1)
	{
		flex_button_scan();
		tx_thread_sleep(MS_TO_TICK(10));
	}	
}
回复

使用道具 举报

4

主题

30

回帖

42

积分

新手上路

积分
42
发表于 2024-4-15 11:21:35 | 显示全部楼层
[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...");
}
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-15 18:17:25 | 显示全部楼层
miss-you 发表于 2024-4-15 11:21
[mw_shl_code=c,true]#include
#include "include.h"

我那个问题是,按键检测都检测不到,打了断点,按键状态检测都不对,有时候执行得到。不知道是不是任务优先级有问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-16 08:35:03 | 显示全部楼层
ccschen 发表于 2024-4-15 18:17
我那个问题是,按键检测都检测不到,打了断点,按键状态检测都不对,有时候执行得到。不知道是不是任务优 ...

简单的按键都检测不到,必须程序设计问题,得排查下了。
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-16 10:02:38 | 显示全部楼层
eric2013 发表于 2024-4-16 08:35
简单的按键都检测不到,必须程序设计问题,得排查下了。

在FREERTOS下,也是任务中加检测函数,扫描方式,然后加任务延时,好用得很,不知道THREADX下这样就不好使了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-17 08:07:46 | 显示全部楼层
ccschen 发表于 2024-4-16 10:02
在FREERTOS下,也是任务中加检测函数,扫描方式,然后加任务延时,好用得很,不知道THREADX下这样就不好 ...

可以肯定,程序是有问题,这个是我们的综合模板Demo,各种外设均正常。

ThreadX全家桶所有组件综合模板发布,史上最强安全认证综合模板,稳如泰山,含AC5,AC6,IAR和GCC(2023-12-23)
https://www.armbbs.cn/forum.php? ... 3554&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
 楼主| 发表于 2024-4-17 20:57:57 | 显示全部楼层
eric2013 发表于 2024-4-17 08:07
可以肯定,程序是有问题,这个是我们的综合模板Demo,各种外设均正常。

ThreadX全家桶所有组件综合模 ...

也可能是优先级问题,我看综合DEMO是7级,我这程序都默认是10级。空了调整下。是不是加了休眠函数的问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 03:32 , Processed in 0.319490 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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