예제 #1
0
def main():
    # Logging
    logging.basicConfig(level=logging.DEBUG)
    logging.debug("Application starting...")
    # Read config
    config = ConfigParser()
    config.read("app.ini", encoding="UTF-8")
    mainConfig = MainConfig(config)
    logicConfig = LogicConfig(config)
    # Create components
    app = QApplication([])
    engineCom = EngineCom()
    cabinCom = CabinCom()
    dashboard = Dashboard(mainConfig.initDriveMode)
    logic = Logic(logicConfig, mainConfig.initDriveMode)
    workerManager = WorkerManager(
        [engineCom.worker, cabinCom.worker, logic.worker])
    tuning = Tuning(onExit=lambda: (workerManager.stopAll(), app.quit()))
    # Connect components
    engineCom.signals.outEngineTachometer.connect(logic.inEngineTachometer)
    engineCom.signals.outGearboxInTachometer.connect(
        logic.inGearboxInTachometer)
    engineCom.signals.outGearboxOutTachometer.connect(
        logic.inGearboxOutTachometer)
    engineCom.signals.outGearNumber.connect(logic.inGearNumber)
    engineCom.signals.outOilPressure.connect(logic.inOilPressure)
    engineCom.signals.outOilTemperature.connect(logic.inOilTemperature)
    engineCom.signals.outWatterTemperature.connect(logic.inWatterTemperature)
    cabinCom.signals.outRaceModeIsOn.connect(logic.inRaceModeIsOn)
    cabinCom.signals.outStopwatchButtonIsOn.connect(
        logic.inStopwatchButtonIsOn)
    cabinCom.signals.outOdometerButtonIsOn.connect(logic.inOdometerButtonIsOn)
    cabinCom.signals.outTurnLeftSignalIsOn.connect(logic.inTurnLeftSignalIsOn)
    cabinCom.signals.outTurnRightSignalIsOn.connect(
        logic.inTurnRightSignalIsOn)
    cabinCom.signals.outSteeringWhilePosition.connect(
        logic.inSteeringWhilePosition)
    cabinCom.signals.outAccelerometer.connect(logic.inAccelerometer)
    logic.signals.outMode.connect(dashboard.inMode)
    logic.signals.outTachometerEngine.connect(dashboard.inTachometerEngine)
    logic.signals.outTachometerGearbox.connect(dashboard.inTachometerGearbox)
    logic.signals.outTachometerGears.connect(dashboard.inTachometerGears)
    logic.signals.outAccelerometer.connect(dashboard.inAccelerometer)
    logic.signals.outSteeringWheelEncoder.connect(
        dashboard.inSteeringWheelEncoder)
    logic.signals.outTurnLeftIndicator.connect(dashboard.inTurnLeftIndicator)
    logic.signals.outTurnRightIndicator.connect(dashboard.inTurnRightIndicator)
    logic.signals.outSpeedometer.connect(dashboard.inSpeedometer)
    logic.signals.outGearNumber.connect(dashboard.inGearNumber)
    logic.signals.outOilWarningIndicator.connect(
        dashboard.inOilWarningIndicator)
    logic.signals.outWatterWarningIndicator.connect(
        dashboard.inWatterWarningIndicator)
    logic.signals.outSpeedometer.connect(dashboard.inSpeedometer)
    logic.signals.outStopwatch.connect(dashboard.inStopwatch)
    logic.signals.outOilManometer.connect(dashboard.inOilManometer)
    logic.signals.outOilThermometer.connect(dashboard.inOilThermometer)
    logic.signals.outWatterThermometer.connect(dashboard.inWatterThermometer)
    logic.signals.outOdometer.connect(dashboard.inOdometer)
    # Show UI
    if mainConfig.dashboardFullScreen:
        dashboard.showFullScreen()
    else:
        dashboard.show()
    if mainConfig.showTuningUi:
        tuning.show()
    # Run processing
    workerManager.startAll()
    # Start events loop
    sys.exit(app.exec_())