private void RoofAnimation_drawStoped() { //check hardware status sync mode ObsControl.ASCOMDome.CheckDomeShutterStatus(); ShutterState curShutState = ObsControl.ASCOMDome.curShutterStatus; if ((curShutState == ShutterState.shutterOpening) || (curShutState == ShutterState.shutterClosing)) { rectRoof.Left = ROOF_startPos.X + Convert.ToInt16(Math.Round((double)ROOF_endPos / 2)); if (prev_direction == "open") { btnCloseRoof.Enabled = true; btnOpenRoof.Enabled = false; btnStopRoof.Enabled = false; } else if (prev_direction == "close") { btnCloseRoof.Enabled = false; btnOpenRoof.Enabled = true; btnStopRoof.Enabled = false; } } else if (curShutState == ShutterState.shutterOpen) { RoofAnimation_drawOpened(); } else if (curShutState == ShutterState.shutterClosed) { RoofAnimation_drawClosed(); } }
public void CloseShutter() { //tl.LogMessage("CloseShutter", "Shutter has been closed"); //因为遥控按钮按一次继电器接通,再按一次继电器断开,无法知道现在处于什么状态 //为了确保能够关闭,这里先点击一次StopRoof,因为互锁,除了Stop外其他继电器都会断开,然后在CloseRoof //if (Slewing) return; //StopRoof();//由于遥控保持3秒,调用stop后无法执行close //System.Threading.Thread.Sleep(1000); if (MyShutterState != ShutterState.shutterClosing)//不能重复发,重复发就会停止 { if (BrakeTime > 0) { Locked = 1;//假定刹车时刹住的 UnlockRoof(); } else { CloseRoof(); } //domeShutterState = false; MyShutterState = ShutterState.shutterClosing; OperTime = 0; Aborted = false; } }
/// <summary> /// Get shutter status /// </summary> private ShutterState getDomeShutterStatus() { //Log enter Logging.AddLog(MethodBase.GetCurrentMethod().Name + " enter", LogLevel.Trace); //if device present at all and its ID is set if (Enabled && DRIVER_NAME != "" && this.Connect == true) { try { curShutterStatus = objDome.ShutterStatus; } catch (Exception ex) { curShutterStatus = ShutterState.shutterError; Connected_flag = false; Logging.AddLog("Couldn't get shutter state", LogLevel.Important, Highlight.Error); Logging.AddLog(MethodBase.GetCurrentMethod().Name + "error! [" + ex.ToString() + "]", LogLevel.Important, Highlight.Error); } } else { curShutterStatus = ShutterState.shutterError; Connected_flag = false; //Print if somebody try to connect if device isn't presetn. Mostly for debug Logging.AddLog("Dome is not set. Couldn't return status of shutter", LogLevel.Debug, Highlight.Error); } Logging.AddLog(System.Reflection.MethodBase.GetCurrentMethod().Name + ": " + curShutterStatus, LogLevel.Trace); return(curShutterStatus); }
public void HardwareStatusReceived(IShutterStatus status) { Logger.Info().Message("Shutter status {status}", status).Write(); ShutterStatus = status; UpdateStatus(status); ShutterState.StatusUpdateReceived(status); }
private string FormatShutterPosition(DomeManager mgr) { string position = "Unknown"; ShutterState shutterStatus = this.ShutterStatus; double fractionOpen = (mgr.Capabilities.CanSetAltitude) ? this.Altitude / 90.0 : Double.NaN; bool useFraction = (!Double.IsNaN(fractionOpen)); switch (shutterStatus) { case ShutterState.shutterClosed: position = "Closed"; break; case ShutterState.shutterClosing: position = "Closing" + ((useFraction) ? String.Format(" at {0:P0}", fractionOpen) : ""); break; case ShutterState.shutterError: position = "Unknown"; break; case ShutterState.shutterOpen: position = "Open" + ((useFraction) ? String.Format(" at {0:P0}", fractionOpen) : ""); break; case ShutterState.shutterOpening: position = "Opening" + ((useFraction) ? String.Format(" at {0:P0}", fractionOpen) : ""); break; } return(position); }
public void Stop(string reason) { ShutterState prev = State; bool openPinWasOn = openPin.isOn; bool closePinWasOn = closePin.isOn; if (openPinWasOn || closePinWasOn) { openPin.SetOff(); closePin.SetOff(); activityMonitor.EndActivity(ActivityMonitor.ActivityType.Shutter, new Activity.ShutterActivity.EndParams() { endState = Activity.State.Succeeded, endReason = reason, percentOpen = PercentOpen, }); webClient.SetPacing(WebClient.Pacing.Slow); #region debug debugger.WriteLine(Debugger.DebugLevel.DebugShutter, "Stop: was moving (openPin: {0}, closePin: {1})", openPinWasOn.ToString(), closePinWasOn.ToString()); #endregion } else { #region debug debugger.WriteLine(Debugger.DebugLevel.DebugShutter, "Stop: was NOT moving."); #endregion } }
void domeMovingTimer_Elapsed(object sender, ElapsedEventArgs e) { sysLog.LogMessageCrLf("domeMovingTimer_Elapsed()", "domeMovingTimer_Elapsed."); this.Read_ZREG_O1XT1(); sysLog.LogMessageCrLf("domeMovingTimer_Elapsed()", "shutterStatus=" + shutterStatus); if ((shutterStatus == ShutterState.shutterClosing) && (this.IsClosed())) { sysLog.LogMessageCrLf("domeMovingTimer_Elapsed()", "shutterClosing->shutterClosed."); this.shutterStatus = ShutterState.shutterClosed; //if (this.domeMovingTimer.Enabled) { this.domeMovingTimer.Stop(); } } if ((shutterStatus == ShutterState.shutterOpening) && (this.IsOpened() >= 2)) { sysLog.LogMessageCrLf("domeMovingTimer_Elapsed()", "shutterOpening->IsOpened."); this.shutterStatus = ShutterState.shutterOpen; if (this.domeMovingTimer.Enabled) { this.domeMovingTimer.Stop(); } } //Console.WriteLine("domeMovingTimer_Elapsed"); }
public static void HW_OpenShutter() { // Ensure that the Alt stays in bounds if (g_dMinAlt > g_dDomeAlt) { g_dTargetAlt = g_dMinAlt; g_dDomeAlt = g_dMinAlt; } if (g_dMaxAlt < g_dDomeAlt) { g_dTargetAlt = g_dMaxAlt; g_dDomeAlt = g_dMaxAlt; } if (g_eShutterState == ShutterState.Open) { return; } if (g_eShutterState == ShutterState.Error) { return; } g_dOCProgress = g_dOCDelay; g_eShutterState = ShutterState.Opening; }
// Update is called once per frame void Update() { switch (snapState) { //grow the shutters until they take up the full screen case ShutterState.Closing: topBar.sizeDelta = new Vector2(canvas.pixelRect.width, topBar.rect.height + shutterSpeed); bottomBar.sizeDelta = new Vector2(canvas.pixelRect.width, topBar.rect.height + shutterSpeed); if (topBar.rect.height >= canvas.pixelRect.height || bottomBar.rect.height >= canvas.pixelRect.height) { snapState = ShutterState.Opening; } break; //shrink the shutters until they are no longer visible case ShutterState.Opening: topBar.sizeDelta = new Vector2(canvas.pixelRect.width, topBar.rect.height - shutterSpeed); bottomBar.sizeDelta = new Vector2(canvas.pixelRect.width, topBar.rect.height - shutterSpeed); if (topBar.rect.height <= 0 || bottomBar.rect.height <= 0) { snapState = ShutterState.Still; } break; //do nothing case ShutterState.Still: break; } }
public void ShutterDirectionReceived(ShutterDirection direction) { if (direction == ShutterDirection.Closing || direction == ShutterDirection.Opening) { ShutterMovementDirection = direction; } ShutterState.ShutterDirectionReceived(direction); }
public void SetState(ShutterState state, bool shake = true) { if (state != State) { State = state; EventDispatcher.Broadcast(StateChanged, State, shake); } }
public static void HW_CloseShutter() { if (g_eShutterState == ShutterState.Closed) { return; } g_dOCProgress = g_dOCDelay; g_eShutterState = ShutterState.Closing; }
public void OpenShutter() { CallResult result = SendRequest(ActionCodes.openRoof); if (result.returnCode == ReturnCodes.roofError || result.returnCode == ReturnCodes.commandError) { domeShutterState = ShutterState.shutterError; tl.LogMessage("OpenShutter", "Shutter error while asking to open"); } tl.LogMessage("OpenShutter", "Shutter has been asked to open"); }
public void CloseGate() { if (m_currentState == ShutterState.Closed) { return; } transform.DOMove(m_closePosition, m_openCloseSpeed).OnComplete(() => { if (m_onShutterClose != null) { m_onShutterClose.Invoke(); } }); m_currentState = ShutterState.Closed; }
public void OpenGate() { if (m_currentState == ShutterState.Opened) { return; } transform.DOMove(m_openPosition, m_openCloseSpeed).OnComplete(() => { if (m_onShutterOpen != null) { m_onShutterOpen.Invoke(); } });; m_currentState = ShutterState.Opened; }
public static void HW_MoveShutter(double Alt) { // If the shutter is opening or closing, then cause it to jam if (g_dOCProgress > 0) { g_dOCProgress = 0; g_eShutterState = ShutterState.Error; } else { g_dTargetAlt = Alt; } }
/// <summary> /// Invocar cuando en la interfaz se escoja la opcion "Set Close". /// </summary> private void CloseDome() { sysLog.LogMessageCrLf("CloseDome()", "Cerrando el Domo."); this.shutterStatus = ShutterState.shutterClosing; this.domeMovingTimer.Start(); this.deadManTimer.Stop(); byte[] cerrar; cerrar = new byte[2]; cerrar[0] = 0; cerrar[1] = 0; this.AseguraPlcConnected(); zelioConn.WriteSingleRegister(0, ZREG_J1XT1, cerrar); }
private void ToggleShutterState() { ShutterState state = Status.ShutterStatus; switch (state) { case ShutterState.shutterOpen: case ShutterState.shutterOpening: case ShutterState.shutterError: DomeManager.CloseDomeShutter(); break; case ShutterState.shutterClosing: case ShutterState.shutterClosed: DomeManager.OpenDomeShutter(); break; } }
private void ButtonConnect_Click(object sender, EventArgs e) { if (IsConnected) { driver.Connected = false; } else { driver = new ASCOM.DriverAccess.Dome(Properties.Settings.Default.DriverId) { Connected = true }; ShutterState state = driver.ShutterStatus; driver.CloseShutter(); } SetUIState(); }
public static void HW_Halt() { g_dTargetAlt = g_dDomeAlt; g_eSlewing = Going.slewNowhere; // clear home / park (state is fragile in standard) if (g_bStandardAtPark) { g_bAtPark = false; } if (g_bStandardAtHome) { g_bAtHome = false; } // If the shutter is in motion, then cause it to jam if (g_dOCProgress > 0) { g_dOCProgress = 0; g_eShutterState = ShutterState.Error; } }
public Dome() { sysLog.Enabled = true; sysLog.LogMessageCrLf("Dome()", "Instanciando Dome()."); zelioConn = new Master(); zregJ1XT1 = new Boolean[16]; zregO1XT1 = new Boolean[16]; northRoof = Properties.Settings.Default.NorthOpen; southRoof = Properties.Settings.Default.SouthOpen; shutterStatus = ShutterState.shutterClosed; //sysLog.LogMessageCrLf(driverDescription, "zelioConn.connected=" + zelioConn.connected); //Console.WriteLine("zelioConn.connected=" + zelioConn.connected); deadManTimer = new System.Timers.Timer(DEADMAN_MILISECS); deadManStatus = 0; deadManTimer.Elapsed += new ElapsedEventHandler(deadMan_Elapsed); domeMovingTimer = new System.Timers.Timer(DOMESTATUS_MILISECS); domeMovingTimer.Elapsed += new ElapsedEventHandler(domeMovingTimer_Elapsed); }
public void OpenShutter() { tl.LogMessage("OpenShutter", "Enter"); //Reread sensor data no matter of cache Hardware.getInputStatus(); //read shutter status vars ShutterState dummy = ShutterStatus; //if (Hardware.closed_shutter_flag && !Hardware.opened_shutter_flag) if (!Hardware.opened_shutter_flag) { //Press switch tl.LogMessage("OpenShutter", "Not opened, pressing switch"); //clear shutter status cache lastShutterStatusCheck = EXPIRED_CACHE; if (Hardware.pressRoofSwitch()) { //set moving state Hardware.closed_shutter_flag = false; Hardware.opened_shutter_flag = false; tl.LogMessage("OpenShutter", "Moving was initiated"); } else { tl.LogMessage("OpenShutter", "Can't press switch"); } } else if (Hardware.closed_shutter_flag) { tl.LogMessage("OpenShutter", "Skipping because already opened"); } tl.LogMessage("OpenShutter", "Exit"); domeShutterState = true; }
public void OpenShutter() { //tl.LogMessage("OpenShutter", "Shutter has been opened"); //if (Slewing) return; //StopRoof(); //System.Threading.Thread.Sleep(1000); if (MyShutterState != ShutterState.shutterOpening) { if (BrakeTime > 0) { Locked = 1;//假定刹车时刹住的 UnlockRoof(); } else { OpenRoof(); } //domeShutterState = true; MyShutterState = ShutterState.shutterOpening; OperTime = 0; Aborted = false; } }
public void init() { if (_initialized) { return; } try { openPin = new WisePin("ShutterOpen", hw.domeboard, DigitalPortType.FirstPortA, 0, DigitalPortDirection.DigitalOut, controlled: true); closePin = new WisePin("ShutterClose", hw.domeboard, DigitalPortType.FirstPortA, 1, DigitalPortDirection.DigitalOut, controlled: true); } catch (Exception ex) { debugger.WriteLine(Debugger.DebugLevel.DebugShutter, "WiseDomeShutter.init: Exception: {0}.", ex.Message); } try { openPin.SetOff(); closePin.SetOff(); } catch (Hardware.Hardware.MaintenanceModeException) { } ReadProfile(); if (ShutterWebClientEnabled && _ipAddress != string.Empty) { webClient = new WebClient(_ipAddress, this); } shutterPins = new List <WisePin> { openPin, closePin }; _state = ShutterState.shutterError; _initialized = true; }
private void SetShutterState(ShutterState state) { switch (state) { case ShutterState.Init: this.Visible = true; loadingLabel.Text = InitMessage; break; case ShutterState.Error: this.Visible = true; loadingLabel.Text = ErrorMessage; break; case ShutterState.Loading: this.Visible = true; loadingLabel.Text = "Loading..."; break; case ShutterState.Open: this.Visible = false; break; } }
/// <summary> /// Initiate roof closing /// </summary> /// <returns></returns> public bool RoofClose() { Logging.AddLog("Trying to close roof", LogLevel.Activity); //Check if driver is connected if (Connected_flag != true) { Logging.AddLog("Dome driver isn't connected", LogLevel.Important, Highlight.Error); return(false); } //Check if power is connected //if (ExtASCOMSiwitchObj != null) //{ // if (ExtASCOMSiwitchObj.Connected_flag && ExtASCOMSiwitchObj._Roof_power_flag != true) // { // Logging.AddLog("Roof power switched off", LogLevel.Activity); // return false; // } //} RoofRoutine_StartTime = DateTime.Now; try { //open dome objDome.CloseShutter(); return(true); } catch (Exception ex) { curShutterStatus = ShutterState.shutterError; Logging.AddLog("Couldn't close shutter", LogLevel.Important, Highlight.Error); Logging.AddLog(MethodBase.GetCurrentMethod().Name + " Error! [" + ex.ToString() + "]", LogLevel.Debug, Highlight.Error); return(false); } }
// Events private void OnShutterStateChanged(ShutterState newState, bool shake) { EventDispatcher.Broadcast(ShutterStateChanged, newState, shake); }
public void SetState(ShutterState state) { Models.Get <IShuttersModel>().SetState(state); }
public override void Initialize() { Models.Get <IShuttersModel>().StateChanged += OnShutterStateChanged; State = ShutterState.Open; }
public void ShutterEncoderTickReceived(int encoderPosition) { // The state must process the position update because it needs to make decisions based on the relative position. Logger.Debug().Message("").Message("Shutter position received {position}", encoderPosition).Write(); ShutterState.EncoderTickReceived(encoderPosition); }