touchgfx - 带硬件编码轮的 TouchGFX
问题描述
尝试在 ARM 上实现 touchGFX,UI 由按钮编码轮控制,这在汽车中很常见。
我遇到的问题是低级编码轮部分是从 C 中的主后端应用程序处理的。
TouchGFX,在 C++ 中。设计器应用程序允许直接实现硬件按钮,即由堆栈直接处理,但编码轮需要实现一些逻辑,最好在后端实现。
通常,从后端到 touchGFX 的交互方式是通过轮询数据的模型类(根据文档大约为 60Hz)。
但是,对于物理编码器,最好在后端和 GFX 之间进行基于触发器的通信,但是,文档或示例中不清楚如何获取 GFX 上下文以及如何从后端集成触发器,通过直接调用或回调而不是轮询。
我尝试实现 C->C++ 回调,但找不到 GFX 上下文。
在挖掘了文档和大量帖子之后,我还没有找到解决方案。
解决方案
您可以执行以下操作:
向前端应用程序添加一个函数,该函数返回一个指向模型的指针
添加一个 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 小部件。
推荐阅读
- database - 解决多个实体的数据库架构
- c# - 在 C# 中使用丢弃作为返回方法
- excel - 是否可以在已过滤的工作表上使用 VBA 代码?
- wordpress - 如何修复 Wordpress 中的 reCaptcha?
- xpages - XPages:有没有办法强制保存 NotesXspDocument?
- javascript - 如何在 Teachable Machines 中裁剪提供给模型的图像?
- php - 在 Opencart:2.3.0.2 中显示“同一级别”类别
- json - 如果 int 从 json 作为 null 传递,如何解决 MVC 模型 null 问题
- java - 这个递归函数的时间复杂度是多少?
- vb.net - 使用 VB.Net ClientWebSocket 从 WebSocket 获取数据