C

Qt Quick Ultralite 汽车集群演示

展示整合 QML 和 C++,以及使用第三方库。

概述

这是一个复杂的应用程序,展示了使用 Qt Quick Ultralite 构建的应用程序的许多方面

  • 将 C++ 业务逻辑与 QML 应用程序集成
  • 通过分割成多个 QML 组件来处理复杂的用户界面
  • 使用复杂的动画来提供最佳的用户体验,而不牺牲性能

屏幕中央可以切换到四个不同的页面

  • 媒体播放器
  • 电话
  • 导航
  • 配置

页面和菜单可以通过键盘输入控制,使用桌面计算机上的键盘。也可以使用 Renesas Mango 主板上的物理 HMI 转盘和 4 方向开关控制

动作桌面RH850-D1M1A
向上导航向上键切换向上
向下导航向下键切换向下
向左导航向左键切换向左
向右导航向右键切换向右
下一项空格键转盘按下
下一页翻页键转盘右
上一页翻页键转盘左
验证回车键转盘按下

使用模拟控制器控制演示

演示还可以通过 automotive/src/simulationcontroller.h 中的 C 链接 API 控制。

每个键都有一个对应的 API 函数,带有 qul_application_control_ 前缀。使用 pressed 作为 true 调用函数,然后使用 pressed 作为 false 来触发应用程序的按键。

要禁用自动页面、菜单和模式更改,请使用 qul_application_force_interactive_mode 并将 force_interactive_mode 设置为 true

要禁用模拟驱动数据,请使用 qul_application_show_simulated_drive_data 并将 simulated_drive_data 设为 false。在此之后,调用设置函数,例如 qul_application_set_speed 来设置速度值。

要禁用车道助手动画,请使用 qul_application_set_lane_assistant_enabled 并将 enabled 设置为 false

要禁用模拟灯光指示器,只需调用一次qul_application_show_simulated_light_indicators,将simulated_light_indicators设为false。之后,调用设置函数,例如使用left_blinker_on作为truequl_application_set_left_blinker_on来打开左侧转向灯。

目标平台

  • RH850-D1M1A
  • STM32F769i
  • Infineon TRAVEO™ T2G

屏幕截图

正常模式

运动模式

基准模式

在基准模式下,应用程序运行预定义的30秒时间,并在30秒间隔结束时在屏幕上显示性能指标。如果Qt Quick Ultralite Core库通过QUL_ENABLE_PERFORMANCE_CONSOLE_OUTPUT=ON构建,同样的结果也会在串行控制台上显示。

以下性能指标在测试结束时显示

参数描述
1总帧数记录间隔内的总帧数。
2平均FPS记录间隔期间测量的平均每秒帧数值。
3最小FPS记录期间捕获的最小每秒帧数值。
4最大堆使用量自应用程序启动以来记录的最大堆使用量(以字节为单位)。
5最大堆栈使用量自应用程序启动以来记录的最大堆栈使用量(以字节为单位)。
6平均CPU负载记录间隔内平均的CPU负载百分比值。

基准模式作为独立的CMake目标提供,名称为automotive_benchmark。要运行基准模式,构建并刷新目标automotive_benchmark

automotive_benchmark目标需要添加编译定义,QUL_DEMO_BENCHMARK_MODE

target_compile_definitions(automotive_benchmark PRIVATE
    QUL_DEMO_BENCHMARK_MODE
)

automotive.qmlproject文件包含如下所示的benchmark_module.qmlproject文件:

ModuleFiles {
  files: [
  "benchmark/benchmark_module.qmlproject"
  ]
}

在根QML文件中导入以下模块。

import QtQuickUltralite.Extras 2.0
import Benchmark 1.0
import QtQuickUltralite.Profiling
  • Qt Quick Ultralite Extras模块提供了QulPerf对象,该对象允许开始和停止测量。
  • benchmark_module.qmlproject文件提供的Benchmark模块提供了用于模拟触摸手势的方法。
  • Qt Quick Ultralite Profiling模块提供了屏幕叠加QulPerfOverlay,用于在应用程序用户界面顶部显示性能指标。

在根QML中添加QulPerfOverlay QML对象以显示基准结果。当30秒后触发benchmarkTimer时,此叠加层可见。

QulPerfOverlay {
    id: benchmarkResult
    anchors.horizontalCenter: parent.horizontalCenter;
    anchors.verticalCenter: parent.verticalCenter;
    visible: false
}

当根对象实例化并触发Component.onCompleted信号时,在根QML项中开始记录。

Component.onCompleted: {
    QulPerf.recording = true
}

应用程序运行30秒。30秒后停止记录,并使基准结果屏幕叠加可见。

Timer {
    id: benchmarkTimer
    interval: 30000
    running: true
    repeat: false
    onTriggered: {
        QulPerf.recording = false;
        benchmarkResult.visible = true
    }
}

注意: 基准模式需要构建具有QUL_ENABLE_PERFORMANCE_LOGGING=ONQUL_ENABLE_HARDWARE_PERFORMANCE_LOGGING=ON的Qt Quick Ultralite Core和平台库。

文件

图片

在特定Qt许可证下提供。
了解更多。