C
区域式暖通空调控制

构建和部署示例
请参阅有关构建和部署 Qt for Android Automotive 示例的特定步骤。
概述
此示例使用 Android Automotive 的 Qt IF 生成器扩展 的区域功能。有关详细信息,请参阅暖通控制文档。
本页仅涵盖区域的使用。
启用区域配置文件的准备
首先,在 .qface 文件中,组件的 zoned 属性必须设置为 true
@config: { zoned: true, id: "io.qt.qtif.android.ClimateControl/1.0", ... }其次,要能够在不同的区域访问特定的 VHAL 属性,必须将其分配给这些区域。在以下示例中,QIfClimateControl 的 targetTemperatureSet 属性将存在于 Driver 和 Passenger 区域。
QtIfAndroidVehicleFunctions.QIfClimateControl#targetTemperatureSet:
config_android_automotive:
vhalId: HVAC_TEMPERATURE_SET
zone:
- DRIVER_ZONE_ID
- PASSENGER_ZONE_ID
mightNeedConversion: true编译的是 DRIVER_ZONE_ID 和 PASSENGER_ZONE_ID 区域别名 (Android Automotive 区类型)。
zoneAliases:
- DRIVER_ZONE_ID = VehicleAreaSeat.SEAT_ROW_1_LEFT | VehicleAreaSeat.SEAT_ROW_2_LEFT
| VehicleAreaSeat.SEAT_ROW_2_CENTER
- PASSENGER_ZONE_ID = VehicleAreaSeat.SEAT_ROW_1_RIGHT
| VehicleAreaSeat.SEAT_ROW_2_RIGHT
- SEAT_ALL = DRIVER_ZONE_ID | PASSENGER_ZONE_ID
- REAR_WINDSHIELD = VehicleAreaWindow.WINDOW_REAR_WINDSHIELD
- FRONT_WINDSHIELD = VehicleAreaWindow.WINDOW_FRONT_WINDSHIELD用于 QML(例如,Driver、Passenger 等)的区域名称在区域映射部分定义。
zoneMappings:
"": SEAT_ALL
Driver: DRIVER_ZONE_ID
Passenger: PASSENGER_ZONE_ID
RearWindshield: REAR_WINDSHIELD
FrontWindshield: FRONT_WINDSHIELD运行示例
要从 Qt Creator 运行示例,请打开 欢迎 模式并从 示例 中选择示例。有关更多信息,请参阅 Qt Creator:教程:构建和运行。
在 QML 中使用区域
与 HVAC 控制 示例一样,到后端的连接在单独的 QML 文件中定义:ClimateControlFacade.qml。
在 QML 中访问特定区域的属性很直接。生成的 ClimateControl 组件提供了 zoneAt 属性,它随后提供了名为区域的附加属性(Driver、Passenger 等)。此属性是 ClimateControl 组件的实例。然而,只有分配给特定区域的属性才是活动属性。因此,您可以分配 Driver 的除雾器值,但它不会产生任何效果。
由于区域是独立的对象,我们必须为每个区域单独进行连接。
Connections { target: climateControl.zoneAt.Driver ignoreUnknownSignals: true function onTargetTemperatureSetChanged(targetTemperatureSet) { facade.targetTemperatureSetDriver = targetTemperatureSet } } Connections { target: climateControl.zoneAt.Passenger ignoreUnknownSignals: true function onTargetTemperatureSetChanged(targetTemperatureSet) { facade.targetTemperatureSetPassenger = targetTemperatureSet } }
要将区域属性的值传递到后端,我们必须考虑包含这些属性的区域能否做到。
Connections { id: ui2vhal target: facade // Defrosters function onDefrostFrontOnChanged() { climateControl.zoneAt.FrontWindshield.defroster = facade.defrostFrontOn } function onDefrostRearOnChanged() { climateControl.zoneAt.RearWindshield.defroster = facade.defrostRearOn } // Temperatures function onTargetTemperatureSetDriverChanged() { climateControl.zoneAt.Driver.targetTemperatureSet = facade.targetTemperatureSetDriver } function onTargetTemperatureSetPassengerChanged() { climateControl.zoneAt.Passenger.targetTemperatureSet = facade.targetTemperatureSetPassenger }
在特定 Qt 许可证下可用。
了解更多信息。