首页 > 解决方案 > 带硬件编码轮的 TouchGFX

问题描述

尝试在 ARM 上实现 touchGFX,UI 由按钮编码轮控制,这在汽车中很常见。

我遇到的问题是低级编码轮部分是从 C 中的主后端应用程序处理的。

TouchGFX,在 C++ 中。设计器应用程序允许直接实现硬件按钮,即由堆栈直接处理,但编码轮需要实现一些逻辑,最好在后端实现。

通常,从后端到 touchGFX 的交互方式是通过轮询数据的模型类(根据文档大约为 60Hz)。

但是,对于物理编码器,最好在后端和 GFX 之间进行基于触发器的通信,但是,文档或示例中不清楚如何获取 GFX 上下文以及如何从后端集成触发器,通过直接调用或回调而不是轮询。

我尝试实现 C->C++ 回调,但找不到 GFX 上下文。

在挖掘了文档和大量帖子之后,我还没有找到解决方案。

标签: touchgfx

解决方案


您可以执行以下操作:

  1. 向前端应用程序添加一个函数,该函数返回一个指向模型的指针

  2. 添加一个 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
    
  3. 从 C 后端调用 func1()

从 funcOnModel 可以通过 ModelListener 或派生的 Presenter 访问 touchgfx 小部件。


推荐阅读