/* * SCENARION XML FILE HELP * 1. Нужно создать секцию с именем сценария <scenarioMain></scenarioMain> * 2. Внутри могут размещаться команды или глобальные параметры * Примеры: * <CDC_CONNECT_PAUSE type="parameter" value="2000" /> * <WAIT run="true" argument="2000" /> * Формат * TYPE: * "command" or omitted - this is command(will try to run) * type="parameter" - this is parameter * * RUN: * "true" or omitted = run command * "false" = not run * * ARGUMENT: * parameter to be passed to command * 4. Команды будут выполняться последовательно, если они не параметры и если у них RUN не false */ /// <summary> /// Init command interpretator /// </summary> public void InitComandInterpretator() { //Internal commands CommandParser.Commands.Add("VERSION", new Command((a) => VersionData.getVersionString(), "Get current program version")); //Pring version CommandParser.Commands.Add("HELP", new Command((a) => this.CommandParser.ListCommandsFormated2(), "List all available commands")); //list of commands CommandParser.Commands.Add("WAIT", new Command((a) => this.pauseScenarioExecution(a), "Pause execution for <N> milliseconds", "N")); //Pause execution for ... milliseconds //Self control commands CommandParser.Commands.Add("OBS_TELESCOPE_CONNECT", new Command((a) => this.OBS_connectTelescope(), "Connect telescope in Observatory control software")); CommandParser.Commands.Add("OBS_MINIMIZE", new Command((a) => this.OBS_FormSwitchToShort(), "Switch main form of Observatory control software to minimum mode")); CommandParser.Commands.Add("OBS_MAXIMIZE", new Command((a) => this.OBS_FormSwitchToMax(), "Switch main form of Observatory control software to usual (maximum) mode")); //Power commands CommandParser.Commands.Add("POWER_ON", new Command((a) => this.ASCOMSwitch.PowerMainRelaysOn(), "Power on all switch channels")); //Power Mount, Camera, Focuser CommandParser.Commands.Add("POWER_MOUNT_ON", new Command((a) => this.ASCOMSwitch.PowerMountOn(), "Power on mount switch channel")); CommandParser.Commands.Add("POWER_MOUNT_OFF", new Command((a) => this.ASCOMSwitch.PowerMountOff(), "Power off mount switch channel")); CommandParser.Commands.Add("POWER_CAMERA_ON", new Command((a) => this.ASCOMSwitch.PowerCameraOn(), "Power on camera switch channel")); CommandParser.Commands.Add("POWER_CAMERA_OFF", new Command((a) => this.ASCOMSwitch.PowerCameraOff(), "Power off camera switch channel")); CommandParser.Commands.Add("POWER_OFF", new Command((a) => this.ASCOMSwitch.PowerMainRelaysOff(), "Power off all switch channel")); //Power Mount, Camera, Focuser //MaimDL CommandParser.Commands.Add("MAXIM_RUN", new Command((a) => this.startMaximDL(), "Run Maxim DL")); CommandParser.Commands.Add("MAXIM_CAMERA_CONNECT", new Command((a) => objMaxim.ConnectCamera(), "Connect camera in Maxim DL")); CommandParser.Commands.Add("MAXIM_TELESCOPE_CONNECT", new Command((a) => objMaxim.ConnectTelescope(), "Connect telescope in Maxim DL")); CommandParser.Commands.Add("MAXIM_FOCUSER_CONNECT", new Command((a) => objMaxim.ConnectFocuser(), "Connect focuser in Maxim DL")); CommandParser.Commands.Add("MAXIM_CAMERA_SETCOOLING", new Command((a) => objMaxim.CameraCoolingOn(), "Switch cooling on and set to def temp")); //switch cooling on and set to def temp CommandParser.Commands.Add("CAMERA_SET_COOLER_TEMP", new Command((a) => objMaxim.CameraCoolingChangeSetTemp(a), "switch cooling on and set to specified double <TEMP>", "TEMP")); //switch cooling on and set to specified temp CommandParser.Commands.Add("CAMERA_WARMPUP", new Command((a) => objMaxim.CameraCoolingOff(true), "Camera warmp up")); //warmup //FocusMax CommandParser.Commands.Add("FOCUSMAX_RUN", new Command((a) => this.startFocusMax(), "Run FocusMax")); //Cartes du Ciel CommandParser.Commands.Add("CdC_RUN", new Command((a) => this.startPlanetarium(), "Run Cartes du Ciel")); CommandParser.Commands.Add("CdC_RUNONLY", new Command((a) => this.startPlanetarium2(), "Run Cartes du Ciel, but don't connect Telescope")); CommandParser.Commands.Add("CdC_TELESCOPE_CONNECT", new Command((a) => this.objCdCApp.ConnectTelescope(), "Connect telescope in Cartes du Ciel current chart")); CommandParser.Commands.Add("CdC_TELESCOPE_CONNECT1", new Command((a) => this.objCdCApp.ConnectTelescopeInChart1(), "Connect telescope in Cartes du Ciel Chart_1")); CommandParser.Commands.Add("CdC_TELESCOPE_CONNECT2", new Command((a) => this.objCdCApp.ConnectTelescopeInChart2(), "Connect telescope in Cartes du Ciel Chart_2")); //CCDAP CommandParser.Commands.Add("CCDAP_RUN", new Command((a) => this.startCCDAP(), "Run CCDAutopilot")); //CCDC CommandParser.Commands.Add("CCDC_RUN", new Command((a) => this.startCCDC(), "Run CCDCommander")); //PHD2 related commands CommandParser.Commands.Add("PHD2_RUN", new Command((a) => this.startPHD2(), "Run PHD2")); CommandParser.Commands.Add("PHD2_CONNECT", new Command((a) => this.objPHD2App.CMD_ConnectEquipment2(), "Connect equipment in PHD2")); CommandParser.Commands.Add("PHDBROKER_RUN", new Command((a) => this.startPHDBroker(), "Run PHD Broker")); //IQP commands CommandParser.Commands.Add("IQP_START", new Command((a) => this.startIQP(), "Start built-in IQP monitoring")); //SOLVER CommandParser.Commands.Add("ASPS_SOLVE", new Command((a) => this.startASPS_Solve(), "Run All Sky Plate Solver and try to solve&sync current telescope position")); //WS commands CommandParser.Commands.Add("WS_RUN", new Command((a) => this.startWS(), "Run WeatherStation monitor")); //TTC commands CommandParser.Commands.Add("TTC_RUN", new Command((a) => this.startTTC(), "Run TelescopeTempControl")); CommandParser.Commands.Add("TTC_GETDATA", new Command((a) => this.objTTCApp.CMD_GetJSONData().ToString(), "Query data from TTC")); CommandParser.Commands.Add("TTC_FANAUTO_ON", new Command((a) => this.objTTCApp.CMD_SetFANControl_ON(), "Switch main mirror cooling fan on and set control to auto")); CommandParser.Commands.Add("TTC_FANAUTO_OFF", new Command((a) => this.objTTCApp.CMD_SetFANControl_OFF(), "Switch main mirror cooling fan off")); CommandParser.Commands.Add("TTC_HEATERAUTO_ON", new Command((a) => this.objTTCApp.CMD_SetHeaterControl_ON(), "Switch secondary mirror heater on and set control to auto")); CommandParser.Commands.Add("TTC_HEATERAUTO_OFF", new Command((a) => this.objTTCApp.CMD_SetHeaterControl_OFF(), "Switch secondary mirror heater off")); CommandParser.Commands.Add("TTC_SETFANPWR", new Command((a) => this.objTTCApp.CMD_SetFanPWR(a), "Switch main mirror cooling fan speed to N", "N [0..255]")); CommandParser.Commands.Add("TTC_SETHEATERPWR", new Command((a) => this.objTTCApp.CMD_SetHeaterPWR(a), "Switch secondary mirror heater power to N", "N [0..255]")); //Complex commmands CommandParser.Commands.Add("IMAGING_RUN_PAUSE", new Command((a) => this.ImagingRun_Pause(), "Pause current imaging run, i.e. send pause command to CCDC through boltwood interface")); CommandParser.Commands.Add("IMAGING_RUN_RESUME", new Command((a) => this.ImagingRun_Resume(), "Resume current imaging run, i.e. release pause through boltwood interface")); CommandParser.Commands.Add("IMAGING_RUN_ABORT", new Command((a) => this.ImagingRun_Abort(), "Abort current image run. i.e. send pause command to CCDC through boltwood interface and engage camera warmup")); CommandParser.Commands.Add("IMAGING_RUN_ABORT_CANCEL", new Command((a) => this.ImagingRun_CancelAbort(), "Cancel aborting current image run. i.e. send resume command to CCDC through boltwood interface and set camera cooling")); //CommandParser.Commands.Add("IMAGING_RUN_ABORT_ASYNC", (a) => this.ImagingRun_Abort_async()); //CommandParser.Commands2.Add("IMAGING_RUN_ABORT_ASYNC", new Command((a) => this.ImagingRun_Abort_async(), "Abort current image run (async mode). i.e. send pause command to CCDC through boltwood interface and engage camera warmup")); }
/// <summary> /// Main form load event - startup actions take place here /// </summary> private void Form1_Load(object sender, EventArgs e) { //DefBackColor DefBackColor = chkMaxim.BackColor; DefBackColorTextBoxes = txtShortAlt.BackColor; //Load config ConfigManagement.Load(); //Load parameters LoadParams(); //Update interface for current Settings values //IQP_UpdateSettingsDialogFields(); //Init programs objects using loaded settings ObsControl.InitProgramsObj(); //Load parameters after all objects was initialized LoadOtherParamsFromXML(); //Dump log, because interface may hang wating for connection Logging.DumpToFile(); //Connect Devices, which are general adapters (no need to power or control something) try { ObsControl.ASCOMSwitch.Connect = true; ObsControl.ASCOMSwitch.CheckPowerDeviceStatus_async(); } catch (Exception ex) { Logging.AddLog("Error connecting Switch on startup [" + ex.Message + "]", LogLevel.Important, Highlight.Error); Logging.AddLog("Exception details: " + ex.ToString(), LogLevel.Debug, Highlight.Error); } try { ObsControl.ASCOMDome.Connect = true; } catch (Exception ex) { Logging.AddLog("Error connecting Dome on startup [" + ex.Message + "]", LogLevel.Important, Highlight.Error); Logging.AddLog("Exception details: " + ex.ToString(), LogLevel.Debug, Highlight.Error); } //Update visual interface statuses UpdateStatusbarASCOMStatus(); UpdatePowerButtonsStatus(); //init graphic elements ROOF_startPos = rectRoof.Location; //Update visual Roof Status UpdateRoofStatus(); //Start tcp server SocketServer = new SocketServerClass(this); toolStripStatus_Connection.Text = "CONNECTIONS: 0"; if (true) { backgroundWorker_SocketServer.RunWorkerAsync(); toolStripStatus_Connection.ForeColor = Color.Black; } else { toolStripStatus_Connection.ForeColor = Color.Gray; } //init vars //DrawTelescopeV(panelTelescope); //Init versiondata static class //Display about information VersionData.initVersionData(); LoadAboutData(); //Init Log DropDown box foreach (LogLevel C in Enum.GetValues(typeof(LogLevel))) { toolStripDropDownLogLevel.DropDownItems.Add(Enum.GetName(typeof(LogLevel), C)); } toolStripDropDownLogLevel.Text = Enum.GetName(typeof(LogLevel), LogLevel.Activity); //Fill in Combobox Boltwood comboBoxRainFlag.DataSource = Enum.GetNames(typeof(Enum_RainFlag)); comboBoxWetFlag.DataSource = Enum.GetNames(typeof(Enum_WetFlag)); comboBoxCloudCond.DataSource = Enum.GetNames(typeof(Enum_CloudCond)); comboBoxWindCond.DataSource = Enum.GetNames(typeof(Enum_WindCond)); comboBoxRainCond.DataSource = Enum.GetNames(typeof(Enum_RainCond)); comboBoxDaylightCond.DataSource = Enum.GetNames(typeof(Enum_DayCond)); comboBoxRoofCloseFlag.DataSource = Enum.GetNames(typeof(Enum_RoofFlag)); comboBoxAlertFlag.DataSource = Enum.GetNames(typeof(Enum_AlertFlag)); //Run all timers at the end mainTimer_Short.Enabled = true; mainTimer_Long.Enabled = true; mainTimer_VeryLong.Enabled = true; logRefreshTimer.Enabled = true; weatherSmallChart.Series[0].XValueType = ChartValueType.DateTime; weatherSmallChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "HH:mm"; foreach (Series Sr in chartWT.Series) { Sr.XValueType = ChartValueType.DateTime; } foreach (ChartArea CA in chartWT.ChartAreas) { CA.AxisX.LabelStyle.Format = "HH:mm"; } //FORM APPEARENCE Form_Normal_Width = this.Width; borderWidth = (this.Width - this.ClientSize.Width) / 2; titleBarHeight = this.Height - this.ClientSize.Height - 2 * borderWidth; statusBarHeight = statusBar.Height; prevX = this.Location.X; prevY = this.Location.Y; Form_SwitchTo_Maximum_Mode(); // TEST COMMAND LINE PARAMETERS bool autostart = false; string comport_over = string.Empty; AuxilaryProc.CheckStartParams(out autostart, out comport_over); if (autostart) { this.btnStartAll.PerformClick(); } }