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 许可证下可用。
了解更多信息。