Azure RTOS GUIX 和 Azure RTOS GUIX Studio 概述

Azure GUIX 嵌入式 GUI 是 Microsoft 的高级行业级 GUI 解决方案,专门设计用于深度嵌入式、实时和 IoT 应用程序。 Microsoft 还提供了一个名为 Azure RTOS GUIX Studio 的功能齐全的所见即所得桌面设计工具,使开发人员可以在桌面上设计其 GUI 并生成随后可以导出到目标的 Azure RTOS GUIX 嵌入式 GUI 代码。 Azure RTOS GUIX 与 Azure RTOS ThreadX RTOS 完全集成,适用于 Azure RTOS ThreadX 支持的许多相同处理器。 凭借上面所有因素以及占用内存极少、执行速度快、易于使用这些优势,Azure RTOS GUIX 成为需要用户界面的最苛刻嵌入式 IoT 应用程序的理想选择。

Azure RTOS GUIX API

功能强大的 API

  • 在需要时完全支持直接画布绘图
  • 易于与 Azure RTOS GUIX Studio 生成的代码进行交互
  • 用于线条、矩形、多边形等的 API
  • 用于圆形、弧形、饼形、弦形、椭圆形等的 API
  • 用于文本绘制和定位的 API
  • 抗锯齿、纹理填充和纯色填充
  • 用于创建和修改屏幕和小组件的 API

Azure RTOS GUIX Studio 生成的文件

  • 自动生成的 ANSI C 源文件
  • 将应用程序软件与布局详细信息隔离开来
  • 包含 UI 设计所需的字体和图像
  • 生成的文件使用应用程序代码进行编译
  • 可以更新屏幕布局而不影响应用程序逻辑
  • 资源 ID 创建语言和主题独立性
  • 用户提供的自定义绘图和事件处理函数

小组件库

  • 预定义、但可自定义的通用界面元素集
  • 极小、紧凑且高效
  • 库包含按钮、仪表、列表、窗口、滚动、滑块、进度栏、提示和许多其他内容
  • 完全可自定义的绘图和外观
  • 完全可自定义的操作和事件处理
  • 只有使用的小组件才会与应用程序软件链接

数学和实用工具

  • 用于正弦、余弦、反正弦、反余弦、正切、平方根的函数
  • 用于操作屏幕区域的函数
  • 系统配置和启动
  • 内存池定义(可选)
  • 计时器管理
  • 动画管理
  • 脏列表维护

图像处理

  • 用于 jpeg 和 png 图像运行时解码的函数
  • 应用抖动和颜色空间转换
  • 图像旋转
  • 图像缩放
  • 图像混合

事件处理

  • 空闲时自动暂停 Azure RTOS GUIX 线程
  • UI 设计中常见的事件驱动编程模型
  • 将输入驱动程序与 Azure RTOS GUIX 绘图线程隔离开来
  • 用于发送和接收事件的函数
  • 所有 Azure RTOS GUIX 小组件类型的预定义事件类型
  • 支持用户定义的自定义事件

画布处理

  • 剪裁和 Z 顺序维护
  • 将小组件库与硬件详细信息隔离开来
  • 将应用程序与硬件详细信息隔离开来
  • 脏区域的自动后台刷新
  • 支持采用分层和混合的多个画布
  • 可由应用程序软件直接调用

输入设备驱动程序

  • 特定于硬件的支持,Azure RTOS GUIX 和应用程序与硬件详细信息隔离
  • 支持电阻式触控、电容式触控和键盘
  • 传递给 Azure RTOS GUIX 事件队列的输入事件

显示驱动程序

  • 特定于硬件的支持
  • 为所有颜色深度和格式提供的通用驱动程序
  • 进行自定义以利用可用的图形加速器

目标硬件

  • 几乎任何能够提供图形输出的硬件都与 GUIX 兼容
  • 支持多个物理显示器
  • 最小 RAM 和闪存要求

创建典雅型用户界面

Azure RTOS GUIX 和 Azure RTOS GUIX Studio 提供了创建独特典雅型用户界面所需的所有功能。 标准 Azure RTOS GUIX 包中包含各种示例用户界面,包括医疗设备参考、智能手表参考、家庭自动化参考、工业控制参考、汽车参考以及各种子画面和动画示例。 请单击下面显示的参考示例。

家庭自动化

Screenshot of the GUIX home automation

医疗

Screenshot of the GUIX medical device

使用者

Screenshot of the GUIX Consumer smart watch

大型家用电器

Screenshot of the GUIX white goods exaample

汽车

Screenshot of the GUIX automotive

工业

Screenshot of the GUIX industrial control

每个 Azure RTOS GUIX 参考都具有相应的 Azure RTOS GUIX Studio 项目,该项目定义参考设计的所有图形元素。 更改参考设计非常简单。 只需打开相应的 Azure RTOS GUIX 项目,进行所需更改,保存项目,然后选择“项目”。

生成所有输出文件以生成适用于 Azure RTOS GUIX 的 C 代码。 然后,只需重新生成目标应用程序并运行,即可观察修改后的参考设计。

GUIX 内存占用情况

Azure RTOS GUIX 具有非常小的最小占用空间,只需 13.2KB 闪存和 4KB RAM 即可实现基本支持(不包括画布所需的内存)。

对于具有内部 GRAM 和自我刷新技术的显示器,无需画布内存。 但是,若要改进绘图性能,或是对于不使用显示器本地的 GRAM 的显示器配置,应由应用程序定义画布内存区域。

画布内存要求是画布大小和颜色深度的函数,由以下公式定义:

画布 RAM(字节)= (x * y * (bpp/8))

其中,“x”和“y”是画布(显示器)的尺寸。

大多数应用程序还会利用图形资源,这些资源不包含在核心 Azure RTOS GUIX 库存储要求中。 这些资源包括字体、图形图标(像素图)和静态字符串。 此数据可以存储在常量内存部分(即闪存)。

内存区域的大小取决于多个因素,其中包括所使用的独特字体的数量和大小、所使用的图形图标的数量和大小、输出颜色格式,以及每个资源是否使用压缩数据(因为 Azure RTOS GUIX 支持字体和像素图数据的 RLE 压缩)。 每个资源的存储要求会显示在 Azure RTOS GUIX Studio 应用程序中,使用户可以跟踪和监视应用程序资源将使用的闪存内存量。

与 Azure RTOS ThreadX 一样,Azure RTOS GUIX 的大小会根据应用程序实际使用的服务自动缩放。 这几乎无需复杂的配置和生成参数,使开发人员能够更轻松地工作。

简单易用

Azure RTOS GUIX 非常易于使用,Azure RTOS GUIX Studio 使开发人员可以在桌面上直观地进行设计,并生成在实际目标上运行的 C 代码,从而让使用变得更加轻松。 应用程序随后可以添加自己的自定义事件处理和绘图函数以完成其 GUI。

使用 Azure RTOS GUIX API 非常简单。 Azure RTOS GUIX API 既直观又功能强大。 API 名称由实词组成,而不是其他文件系统产品中常见的“字母汤”和/或高度缩略的名称。 所有 Azure RTOS GUIX API 均具有前导 gx,并遵循名词-动词命名约定。 此外,整个 API 具有功能一致性。 例如,初始化小组件控制块的所有 API 都命名为 < widget_type>_create,并且每个小组件类型的创建函数参数始终按相同顺序定义。

一组全面的内置小组件

  • Azure RTOS GUIX 提供了一组丰富的内置小组件,包括:
  • 可折叠菜单
  • Button
  • 复选框
  • 圆形仪表
  • 下拉列表
  • 水平列表
  • 水平滚动条窗口
  • 图标
  • 图标按钮
  • 折线图
  • 菜单
  • 多行文本按钮
  • 多行文本输入
  • 多行文本视图
  • 数字像素图提示
  • 数字提示
  • 数字滚轮
  • 像素图按钮
  • 像素图提示
  • 像素图滑块
  • 像素图子画面
  • 进度栏
  • Prompt
  • 径向进度栏
  • 单选按钮
  • 滚轮
  • 单行文本输入
  • 滑块
  • 字符串滚轮
  • 文本按钮
  • 树视图
  • 垂直列表
  • 垂直滚动条

应用程序也可以轻松创建自己的客户小组件。

完整的低级别绘图 API

Azure RTOS GUIX 提供了可靠的画布绘图 API,使应用程序能够呈现复杂的图形形状。

所有函数都支持高颜色深度目标上的抗锯齿功能,并且所有形状都可以在轮廓中填充,包括纯色和像素图图案填充。 在 16 bpp 和更高颜色深度上运行时,所有绘图基元都支持画笔 Alpha。 绘图函数包括:

  • 弧形绘制
  • 圆形绘制
  • 线条绘制
  • 饼形绘制
  • 像素图混合
  • 像素图平铺
  • 多边形绘制
  • 文本绘制
  • 弦形绘制
  • 椭圆形绘制
  • 像素绘制
  • 像素图绘制
  • 像素图旋转
  • 矩形绘制
  • 文本混合

默认的免费字体且易于添加更多字体

Azure RTOS GUIX 提供一组免费的 TrueType 字体。 开发人员可以根据需要添加其他 TrueType 字体。

Azure RTOS GUIX 字体格式支持 8bpp 抗锯齿、4bpp 抗锯齿和 1bpp 单色字体。 对于大多数资源受限的应用程序,Azure RTOS GUIX 使用 GUIX Studio 桌面工具将 TrueType 字体预先呈现为压缩位图格式。

自定义 JPG 和 PNG 解码器实现

自定义 JPG 和 PNG 解码器实现 JPG 和 PNG 文件解码器实现。 此实现支持与 Azure RTOS GUIX 兼容的像素图格式图像的颜色空间转换、抖动和运行时创建。

广泛的显示器和触摸屏支持

Azure RTOS GUIX 可为几乎所有颜色格式提供通用显示器驱动程序,包括 1bpp 单色、8 bpp 调色板、8 bpp 3:3:2 格式、

16 bpp 565 rgb 格式、16 bpp 4:4:4:4 格式、32 bpp x:r:g:b 格式和 32 bpp a:r:g:b 格式。 此外,Azure RTOS GUIX 与许多最流行的 LCD 控制器和硬件加速器(ST ChromeArt、Renesas Synergy 等)集成。

Azure RTOS GUIX 完全支持触摸屏(包括手势支持)、触笔和虚拟键盘输入设备。

Azure RTOS GUIX Studio 桌面所见即所得工具

Azure RTOS GUIX Studio 提供了一个完整的所见即所得屏幕设计环境,使用户可以拖放用于生成 GUI 屏幕的图形元素。 Azure RTOS GUIX Studio 自动生成与 Azure RTOS GUIX 库兼容的 C 代码,可以在目标上编译并运行。 开发人员可以使用集成 Azure RTOS GUIX Studio 字体生成工具生成预先呈现字体,以便在应用程序中使用。 字体可以采用单色或抗锯齿格式生成,并进行优化以节省目标上的空间。 字体可以包含任意字符集,包括用于多语言应用程序的 Unicode 字符。

Diagram of SGS-TUV Saar certification logo

Azure RTOS GUIX Studio 可帮助从 PNG 或 JPG 文件导入图形,并转换为压缩 Azure RTOS GUIX 像素图,以便在目标系统上使用。 许多 Azure RTOS GUIX 小组件类型旨在纳入用户图形以实现自定义外观。 此外,Azure RTOS GUIX Studio 允许自定义由 Azure RTOS GUIX 小组件使用的默认颜色和绘制样式,从而使开发人员能够非常轻松地优化 Azure RTOS GUIX 的外观。 应用程序字符串的生成和维护是 Azure RTOS GUIX Studio 的另一个内置工具。 这使开发人员可以使用一种语言设计应用程序以进行开发,并在产品发布后快速轻松地添加对其他语言的支持。 完整的 Azure RTOS GUIX 应用程序可在 Azure RTOS GUIX Studio 环境中的 PC 桌面上执行,从而可以快速轻松地生成和演示 GUI 概念、测试屏幕流以及观察屏幕转换和动画。 完成后,可以将设计导出为符合目标的 C 数据结构,这些结构可以进行编译并与 Azure RTOS GUIX 和 Azure RTOS ThreadX 库进行链接。

Azure RTOS GUIX 和 Azure RTOS GUIX Studio 支持多个资源主题,从而使应用程序能够在运行时轻松地更换外观。 可以通过一个简单的 API 在运行时更改字体、颜色和像素图。

详细了解 GUIX Studio

完整的 Win32 模拟

Azure RTOS GUIX 使用与在目标板上运行的完全相同的绘图库,在 Windows PC 上运行。 使用 Azure RTOS GUIX,你可以在 PC 上生成和运行 GUI 应用程序,并在目标上使用相同应用程序代码进行调试、快速原型设计、演示和所见即所得目标操作。

高级技术

  • Azure RTOS GUIX 的高级技术包括:
  • alpha 值混合处理
  • 抗锯齿
  • 自动缩放
  • 位图压缩
  • 画布混合
  • 自定义小组件支持
  • 延迟绘图支持
  • 抖动支持
  • 字节顺序非特定编程
  • 硬件加速器支持
  • 多语言支持和 UTF-8 编码
  • 多显示器和画布支持
  • 优化的剪裁、绘图和事件处理
  • 运行时 JPEG 和 PNG 解码器
  • 外观和主题
  • 支持使用 alpha 图形格式的单色到 32 位真彩色
  • 转换、子画面和动画支持
  • Win32 模拟
  • 窗口管理,包括视区和 Z 顺序维护