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
作为true
的qul_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=ON
和QUL_ENABLE_HARDWARE_PERFORMANCE_LOGGING=ON
的Qt Quick Ultralite Core和平台库。
文件
- automotive/+imperial/SpeedLimitImage.qml
- automotive/+imperial/SpeedLimitValues.qml
- automotive/+imperial/Units.qml
- automotive/+metric/SpeedLimitImage.qml
- automotive/+metric/SpeedLimitValues.qml
- automotive/+metric/Units.qml
- automotive/BaseGauge.qml
- automotive/CMakeLists.txt
- automotive/CarStatus.qml
- 汽车/驾驶模式选择器.qml
- 汽车/仪表盘.qml
- 汽车/指南箭.qml
- 汽车/指南箭项.qml
- 汽车/车道辅助.qml
- 汽车/车道辅助白线.qml
- 汽车/线性仪表盘.qml
- 汽车/媒体播放器.qml
- 汽车/菜单.qml
- 汽车/中间仪表盘.qml
- 汽车/导航.qml
- 汽车/普通模式.qml
- 汽车/普通模式内容项.qml
- 汽车/电话.qml
- 汽车/速度警告指示器.qml
- 汽车/运动仪表盘.qml
- 汽车/运动模式.qml
- 汽车/告示.qml
- 汽车/告示指示器.qml
- 汽车/温度仪表盘.qml
- 汽车/汽车.qml
- 汽车/基准/benchmark_module.qmlproject
- 汽车/基准/benchmarkmode.h
- 汽车/导入/Automotive/MainModel.qml
- 汽车/导入/Automotive/MathAPI.qml
- 汽车/导入/Automotive/MediaPlayerModel.qml
- 汽车/导入/Automotive/NaviModel.qml
- 汽车/导入/Automotive/普通模式模型.qml
- 汽车/导入/Automotive/电话模型.qml
- 汽车/导入/Automotive/设置菜单模型.qml
- 汽车/导入/Automotive/运动模式模型.qml
- 汽车/导入/Automotive/样式.qml
- 汽车/导入/Automotive/告示模型.qml
- 汽车/导入/Automotive/qmldir
- 汽车/qmlproject/汽车.qmlproject
- 汽车/qmlproject/汽车_module.qmlproject
- 汽车/qmlproject/汽车_traveo_t2g.qmlproject
- 汽车/地区/+de/Region.qml
- 汽车/地区/+usa/Region.qml
- 汽车/src/3rdparty/etl/CMakeLists.txt
- 汽车/src/canbus/CMakeLists.txt
- 汽车/src/canbus/qt/CMakeLists.txt
- 汽车/src/canbus/rh850-d1m1a-baremetal/CMakeLists.txt
- 汽车/src/connectivityservice.cpp
- 汽车/src/connectivityservice.h
- 汽车/src/hmi_input/CMakeLists.txt
- 汽车/src/hmi_input/hmi_input.cpp
- 汽车/src/hmi_input/hmi_input.h
- 汽车/src/hmi_input/hmi_input_event.h
- 汽车/src/hmi_input/rh850-d1m1a-baremetal/CMakeLists.txt
- 汽车/src/hmi_input/rh850-d1m1a-baremetal/rh850.cpp
- 汽车/src/mathutils.h
- 汽车/src/platform/baremetal/main.cpp
- 汽车/src/simulation/drivestates.cpp
- 汽车/src/simulation/drivestates.h
- 汽车/src/simulation/drivetrain.cpp
- 汽车/src/simulation/drivetrain.h
- 汽车/src/simulation/lights.cpp
- 汽车/src/simulation/lights.h
- 汽车/src/simulation/smfwd.h
- 汽车/src/simulation/speedlimits.cpp
- 汽车/src/simulation/speedlimits.h
- 汽车/src/simulation/stateid.h
- 汽车/src/simulation/states.cpp
- 汽车/src/simulation/states.h
- 汽车/src/simulationcontroller.cpp
- 汽车/src/simulationcontroller.h
- 汽车/src/statemachine.h
图片
- 汽车/images/airbag.png
- 汽车/images/albums/ak.png
- 汽车/images/albums/juno.png
- 汽车/images/albums/phazz.png
- 汽车/images/albums/thievery-corp.png
- 汽车/images/albums/tycho.png
- 汽车/images/arrow-0.png
- 汽车/images/arrow-45.png
- 汽车/images/arrow-90.png
- 汽车/images/arrow-round.png
- 汽车/images/assets-phone-list-pseudo-mask.png
- 汽车/images/battery.png
- 汽车/images/bg-mask.png
- 汽车/images/car-highlights.png
- 汽车/images/clock.png
- 汽车/images/fuel.png
- 汽车/images/gauge-gauge-frame-sport-center.png
- 汽车/images/gauge-gauge-frame-sport-side.png
- 汽车/images/gauge-gauge-frame.png
- 汽车/images/gauge-normal.png
- 汽车/images/highlight-big-sport.png
- 汽车/images/highlight-normal.png
- 汽车/images/highlight-standard-sport.png
- 汽车/images/leaf.png
- 汽车/images/low-beam-headlights.png
- 汽车/images/navi.png
- 汽车/images/needle-normal.png
- 汽车/images/needle-standard-sport.png
- 汽车/images/oil-temp.png
- 汽车/images/parked.png
- 汽车/images/parking-lights.png
- 汽车/images/phone.png
- 汽车/images/photos/aryn.png
- 汽车/images/photos/beatriz.png
- 汽车/images/photos/caspar.png
- 汽车/images/photos/hirini.png
- 汽车/images/photos/joslin.png
- 汽车/images/play.png
- 汽车/images/pseudo-mask-vertical.png
- 汽车/images/ready.png
- 汽车/images/red-border-left.png
- 汽车/images/red-border-right.png
- 汽车/images/road.png
- 汽车/images/setup.png
- 汽车/images/speed-limit-warning.png
- 汽车/images/speed-limit-warnings/140.png
- 汽车/images/speed-limit-warnings/20mph.png
- 汽车/images/speed-limit-warnings/30.png
- 汽车/images/speed-limit-warnings/35mph.png
- 汽车/images/speed-limit-warnings/45mph.png
- 汽车/images/speed-limit-warnings/50.png
- 汽车/images/speed-limit-warnings/55mph.png
- 汽车/images/speed-limit-warnings/70.png
- 汽车/images/speed-limit-warnings/85mph.png
- 汽车/images/speed-limit-warnings/90.png
- 汽车/images/sport.png
- 汽车/images/top-line.png
- 汽车/images/turn_left.png
- 汽车/images/turn_right.png
- 汽车/images/white-line-left.png
- 汽车/images/white-line-right.png
在特定Qt许可证下提供。
了解更多。