带硬件编码轮的 TouchGFX
TouchGFX with hardware encoder wheel
尝试在 ARM 上实现 touchGFX,UI 由按钮编码轮控制,这在汽车中很常见。
我遇到的问题是低级编码轮部分是从 C 中的主要后端应用程序处理的。
TouchGFX,在 C++ 中。设计器应用程序允许直接实现硬件按钮,由堆栈直接处理,但是编码器轮需要实现一些逻辑,最好在后端实现。
通常,从后端与 touchGFX 交互的方式是通过轮询数据的模型 class(根据文档,大约 60Hz)。
但是,对于物理编码器,最好在后端和 GFX 之间进行基于触发器的通信,但是,文档或示例中并不清楚如何获取 GFX 上下文以及如何集成从后端触发,通过直接调用或回调而不是轮询。
我尝试实现 C->C++ 回调,但找不到 GFX 上下文。
在查阅文档和大量 post 之后,我还没有找到解决方案。
您可以执行以下操作:
向前端应用程序添加一个函数,returns指向模型的指针
添加一个 C++ 源文件,其中包含从 C 调用并调用模型中函数的函数:
#include <gui/common/FrontendApplication.hpp>
#ifdef __cplusplus
extern "C" {
#endif
void func1()
{
Model * model = static_cast<FrontendApplication*>(Application::getInstance())->getModelPtr();
if (model)
{
model->funcOnModel();
}
}
#ifdef __cplusplus
}
#endif
从您的 C 后端调用 func1()
从 funcOnModel 可以通过 ModelListener 或派生的 Presenter 访问 touchgfx 小部件。
尝试在 ARM 上实现 touchGFX,UI 由按钮编码轮控制,这在汽车中很常见。
我遇到的问题是低级编码轮部分是从 C 中的主要后端应用程序处理的。
TouchGFX,在 C++ 中。设计器应用程序允许直接实现硬件按钮,由堆栈直接处理,但是编码器轮需要实现一些逻辑,最好在后端实现。
通常,从后端与 touchGFX 交互的方式是通过轮询数据的模型 class(根据文档,大约 60Hz)。
但是,对于物理编码器,最好在后端和 GFX 之间进行基于触发器的通信,但是,文档或示例中并不清楚如何获取 GFX 上下文以及如何集成从后端触发,通过直接调用或回调而不是轮询。
我尝试实现 C->C++ 回调,但找不到 GFX 上下文。
在查阅文档和大量 post 之后,我还没有找到解决方案。
您可以执行以下操作:
向前端应用程序添加一个函数,returns指向模型的指针
添加一个 C++ 源文件,其中包含从 C 调用并调用模型中函数的函数:
#include <gui/common/FrontendApplication.hpp> #ifdef __cplusplus extern "C" { #endif void func1() { Model * model = static_cast<FrontendApplication*>(Application::getInstance())->getModelPtr(); if (model) { model->funcOnModel(); } } #ifdef __cplusplus } #endif
从您的 C 后端调用 func1()
从 funcOnModel 可以通过 ModelListener 或派生的 Presenter 访问 touchgfx 小部件。