Qt for MCUs 2.7正式发布

本文翻译自:Qt for MCUs 2.7 released

原文作者:Qt Group高级产品经理Yoann Lopes

翻译:Macsen Wang

Qt for MCUs的新版本已发布,为Qt Quick Ultralite引擎带来了新功能,增加了更多MCU平台的支持,并且我们对GUI框架进行了多项改进,以适应资源受限的嵌入式系统。

您可以在变更日志中找到此版本的完整变更列表。接下来,我们将介绍此版本的亮点。

更便捷的2D形状处理

我们添加了新的QML API到Qt Quick Ultralite,这些API从传统Qt中进行了适配,并可直接兼容,以简化在应用程序中实现两种常见UI元素(弧形和渐变)的过程。

ArcItem

为了在Qt for MCUs应用程序中绘制弧形,Qt Quick Ultralite已经拥有了来自Shapes模块的PathArc QML类型,它提供了一种灵活且通用的方式来实现任何类型的椭圆弧,但是在只需要绘制两个角度(起始和结束)之间的圆弧时,缺乏便利性。新的ArcItem类型从Qt Design Studio适用于传统Qt的组件进行了调整,满足了这一需求,并提供了一种快速实现诸如仪表或圆形进度指示器等UI组件的方法。

您可以自行查看并尝试新的studio_components示例以了解如何使用它。

渐变

在此版本之前,Qt for MCUs中添加渐变的主要选项要么是将渐变预先渲染为图像,要么是使用PaintedItem进行基于自定义C++绘制的实现。为了提供更多便利性和灵活性,我们将传统Qt Quick中的Gradient类型适配到Qt Quick Ultralite中可用。它可以用于填充Rectangle、Shape和ArcItem,使用任意数量的颜色停止点进行线性渐变。

现有的shapes示例和watch demo已经更新,演示了如何使用这种新类型。

集成任意格式的资源

我们增加了对自定义图像格式支持,以提高使用的灵活性。到目前为止,Qt Quick Ultralite资源编译器在进行编译时预处理图像时,解码并在需要的时候重新进行压缩。这导致用户无法启用自定义格式的图像的即时解码(例如,在运行时从远程服务器下载的图像)或某些格式可能在特定MCU上具有硬件加速(例如JPEG解码)。为了克服这个限制,我们添加了一个新的ImageDecoder API,用于注册自定义图像格式和匹配解码器。这使得可以在应用程序中包含自定义解码器接口(硬件或软件),并利用硬件提供的特有的解码能力,或使用特定用途的图像格式。

您可以在相关指南中阅读有关集成新图像格式所需步骤的更多信息。

即时JPEG解码

作为新的ImageDecoder API的示例实现,我们添加了对某些STM32硬件平台上可用的硬件加速JPEG解码器的支持。该实现演示了如何将JPEG解码器注册为自定义格式,并为其提供了硬件解码接口。在支持的STM32平台上使用这种方法可以节省大量的用于存储的非易失性存储器资源,并避免在运行时解压缩它们时所造成的性能开销。这对于由许多必须存储在flash中并按需解码的帧组成的复杂动画特别有帮助(例如启动动画、视频或类似GIF的动画)。

我们已更新我们的Sprite_Animation示例,以利用支持的STM32 F7和H7平台上的HW JPEG解码器。

轻松针对不同的显示方向旋转GUI(技术预览版)

我们添加了一个新的项目属性,可以在几乎没有运行时性能损耗的情况下轻松对GUI内容应用静态旋转。

当设备的显示不处于其自然方向时,这个功能可以提供极大的便利,例如在纵向显示面板(例如480x800)上显示横向UI(例如800x480)。这中情况可能是基于多个显示屏之间的成本考虑、组装限制或其他各种原因导致的。在这种情况下,除非显示屏控制器能够直接处理所需的旋转,否则您需要根据设置将GUI内容旋转90度、180度或270度。

现有的一些解决方案包括对GUI应用运行时旋转,这可能会显著降低大多数MCU的应用帧率,或者设计具有内置旋转的布局和资源,以避免运行时性能损失,但这意味着工作流程非常繁琐。我们设计的解决方案既简单——只需设置一个项目属性,无需更改QML代码或GUI资源——又高效,同时可以避免运行时的性能损失。

这个功能在Qt for MCUs 2.7中作为技术预览版发布,并计划在Qt for MCUs 2.8 LTS中升级为稳定版。虽然在下一个版本中不希望更改API,但当前版本存在一些限制,尚未实现所有优化,这意味着在该版本中应用旋转可能会对帧率和CPU使用率产生影响。

您可以在配置显示旋转文档页面上获取更多关于此功能的信息。

新设备的支持

作为这个版本的一部分,我们已经添加了一些新的MCU供您尝试!

  • Renesas RA系列的新旗舰MCU——基于Cortex M85的RA8D1——现在作为Tier-2技术预览平台启用。稳定版本会在即将发布的版本中推出。
  • 适用于可穿戴设备的超低功耗MCU Ambiq Apollo4 Plus(带显示屏扩展板)现在作为Tier-3平台推出。
  • Infineon TRAVEO™ T2G CYT4EN是一款提供MPU级性能和图形能力的MCU,支持高分辨率显示,最高可达2880 x 1080,现在作为Tier-2技术预览平台可用。

更多内容

我们不断努力使Qt Quick Ultralite尽可能轻量。在之前的版本中,我们已经发布了相关的优化措施,进一步优化了从QML生成的C++代码,使大多数应用的.text节的大小减少了3%~7%。

改进了FreeRTOS多任务示例,以演示多个线程之间的双向通信,更加贴近实际使用场景。这使得在Qt Quick Ultralite和后端线程之间的数据同步更加容易。

在Qt Design Studio 4.4中进行了许多提升,重点是提供一个仅限于Qt for MCUs可用功能的GUI设计环境,以防止误生成仅对传统Qt有效的QML代码。

当为qmlproject属性分配的值无效时,改进了qmlprojectexporter工具的错误报告。

后续计划

Qt for MCU 2.8 长周期支持版(LTS) 将于 2024 年 5 月底发布。您可以一如既往地期待一系列新功能和改进,从而更快地创建用于 MCU 的高级图形用户界面。在下一版本中,我们计划包含的一些亮点如下:

  • 为了极大地简化创建可调整大小的用户界面的流程,我们为Qt Quick Ultralite提供了Qt Quick Layouts的子集。
  • 新增了TextInput QML类型
  • 这是一个功能齐全的虚拟键盘,具有与智能手机上一致的用户体验。
  • 支持CMSIS-packs,方便将Qt for MCUs与第三方嵌入式IDE项目进行集成。
  • 支持Zephyr RTOS和构建系统。

这还不是全部,我们计划在今年和以后进行更多开发,旨在提高您的生产力,并将嵌入式处理器的上所能实现的效果推向极限。请持续关注更多更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/535061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

容错组合导航

在初始值正确的情况下,惯性导航短期精度较高,但是其误差随着时间是累计的。如果要提高惯性导航的长期精度,就必须提高惯性器件的精度和初始读准精度,这必将大大提高成本。 如果将惯性导航与其他导航系统适当地组合起来&#xff0c…

为什么在深度神经网络中,网络权重的初始化很重要?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 在深度神经网络中,网络权重的初始化非常关键,因为它对网络的训练速度、收敛能力以及最终的性能都有重大影响。具体来说,权重初始化的重要性主要体现在以下几个方面&a…

【从浅学到熟知Linux】冯诺依曼体系结构及进程概念详谈!

🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 🎯每天努力一点点,技术变化看得见 文章目录 冯诺依曼体系结构操作系统如何理解管理操作系统概念设计操作系统目的系统调用和库函数概念 进程基本概念描…

探索设计模式的魅力:MVVM模式在AI大模型领域的创新应用-打破传统,迎接智能未来

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 MVVM模式在AI大模型领域的创新应用-打破传统迎接智能未来 🚀 “在人工智能的领域里&a…

炒股自动化:交易接口API才是重点,券商官方散户可用的接口

上一篇我们用get_full_tick取到了数据,也讲了变量和字典的基本概念,这次我们向交易所发送订单试试。前面文章的链接放在文末了,需要的可以看一下 这些内容是给新手看的,找接口的大佬们直接拉到文末即可 取市场数据的方法很多&am…

Python中Python-docx 包的run介绍

先对run做一个简单地介绍。每个paragraph对象都包含一个run对象的列表。举例: 这是一个简短的段落。 from docx import Document doc Document("1.docx") #上面这段话保存在1.docx中 print("这一段的run个数是:",len(doc.paragr…

国家统计局行政区划获取及入库ES实践

我们先看下最终效果: 1. ES索引新建 PUT administrative_division {"mappings": {"properties": {"province": {"type": "keyword"},"province_code": {"type": "keyword"},&q…

HarmonyOS 开发-阻塞事件冒泡

介绍 本示例主要介绍在点击事件中,子组件enabled属性设置为false的时候,如何解决点击子组件模块区域会触发父组件的点击事件问题;以及触摸事件中当子组件触发触摸事件的时候,父组件如果设置触摸事件的话,如何解决父组…

最近一些前端面试问题整理

最近一些前端面试问题整理 4月8号1. TS 中的 类型别名 和接口的区别是什么?2. 什么是深拷贝和浅拷贝?深浅拷贝的方法有哪些?浅拷贝(Shallow Copy)深拷贝(Deep Copy)区别总结 3. 使用 JSON.strin…

wsl 2在windows11上的设置

详细参考:Manual installation steps for older versions of WSL | Microsoft Learn 1.系统组件要打开 分别是:Hyper-V、虚拟机平台、适用于Windows的Linux子系统 2.以管理员方式运行命令行,逐步执行下面的命令 update to WSL 2, you must…

【MATLAB源码-第185期】基于matlab的16QAM系统相位偏移估计EOS算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 1. 引言 M-QAM调制技术的重要性 现代通信系统追求的是更高的数据传输速率和更有效的频谱利用率。M-QAM调制技术,作为一种高效的调制方案,能够通过在相同的带宽条件下传输更多的数据位来满足这一需求…

数组去重的方法

1.方法一&#xff1a;利用对象属性名的唯一性 去重 数字或者数组去重&#xff0c;效率高 function unique(arr){var result {}; //利用对象属性名的唯一性来保证不重复for(var i0;i<arr.length;i){console.log("result[arr[i]]",result[arr[i]]);if(!result[arr…

4月9号总结

java学习 一.steam流 1.介绍 Stream 是 Java 8 中引入的一种处理集合数据的新抽象。它提供了一种高效且便利的方式来处理集合中的元素&#xff0c;支持函数式编程的特性&#xff0c;使得集合操作变得更加简洁和灵活。 2.创建 List和Set可以直接调用接口的steam方法转换为流 …

FreeRTOS学习 -- 移植

一、添加FreeRTOS源码 在基础工程中新建一个名为FreeRTOS的文件夹&#xff0c;创建FreeRTOS文件夹以后将FreeRTOS的源码添加到这个文件夹中。 portable 文件夹&#xff0c;只需要保留keil、MemMang 和 RVDS这三个文件夹&#xff0c;其他的都可以删除掉。 移植FreeRTOSConfig…

2024 年“认证杯”数学中国数学建模网络挑战赛

题目 A题 保暖纤维的保暖能力 冬装最重要的作用是保暖&#xff0c;也就是阻挡温暖的人体与寒冷环境之间的热 量传递。人们在不同款式的棉衣中会填充保暖材料&#xff0c;从古已有之的棉花、羽绒 到近年来各种各样的人造纤维。不同的保暖纤维具有不同的保暖性能&#xff0c;比如…

为什么要“挺”鸿蒙?

鸿蒙到底是什么&#xff1f; 随着5G、物联网等技术的快速发展&#xff0c;智能终端设备的应用场景也越来越广泛。为了满足不同设备间的互联互通需求&#xff0c;华为在2019年推出了自主研发的操作系统——鸿蒙OS。值得关注的是&#xff0c;这也是首款国产操作系统。 要了解鸿…

Java中实现监听UDP协议的指定端口并收到数据按照十六进制输出

场景 对接协议中需要监听UDP协议的指定端口并监听数据&#xff0c;且数据格式为十六进制。 如果是在linux服务上&#xff0c;可以快速通过C或者python脚本等方式实现。 这里使用Java代码实现&#xff0c;可便于后续做其他存储数据等的扩展&#xff0c;且只需要在服务器上安装…

Java - 算术运算符与算术表达式

今天我们要讲解的是算术运算符和算术表达式。在编程中&#xff0c;我们经常需要进行各种数学计算&#xff0c;而算术运算符和算术表达式则是我们实现这些计算的基础工具。 首先&#xff0c;我们先来了解一下什么是算术运算符。算术运算符是用来进行数学运算的符号&#xff0c;…

【信号与系统 - 6】周期信号的傅里叶变换

1 方法一&#xff1a;对傅里叶级数展开式 F T 变换 FT变换 FT变换 由于周期信号进行傅里叶变换不满足标准定义式 F ( j w ) ∫ − ∞ ∞ e − j w t f ( t ) d t F(jw)\int^{\infty}_{-\infty}e^{-jwt}f(t)dt F(jw)∫−∞∞​e−jwtf(t)dt 使用的条件&#xff1a;需要绝对…

【智能算法应用】灰狼算法求解TSP问题

目录 1.算法原理2.TSP数学模型3.结果展示4.参考文献 1.算法原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.TSP数学模型 旅行商问题&#xff08;TSP&#xff09;是一种著名的组合优化问题&#xff0c;它涉及寻找给定一组城市及其之间的距离或成本&#…