public void en_queue(STATE.states state) { lock (mf.states_queue) { mf.states_queue.Enqueue(state); } }
public void error() { Trace.WriteLine("tp ==> In Function error."); //get the failure state STATE.states state = queue.Dequeue(); //if it is not fatal error, then try to fix it. //TO-DO //if it is fatal error queue.Enqueue(STATE.states.exit); try { BridgePowerOff(); } catch { } try { BridgeCloseDevice(); } catch { } bridge = null; }
public void working(STATE.states state) { try { if (state == STATE.states.TP_SendSleep1Command) { Trace.WriteLine("tp ==> In Function Sleep1."); //byte[] datain = bridge.ReadWrite(0x25, 0x80, 0x04); StateStatus(new StateMachineEventArgs(true, STATE.states.TP_SendSleep1Command, "tp ==> Sleep1")); } if (state == STATE.states.TP_SendDeepSleepCommand) { Trace.WriteLine("tp ==> In Function Deep Sleep."); //byte[] datain = bridge.ReadWrite(0x25, 0x81, 0x04); StateStatus(new StateMachineEventArgs(true, STATE.states.TP_SendDeepSleepCommand, "tp ==> Deep Sleep")); } if (state == STATE.states.TP_PowerOn) { Trace.WriteLine("tp ==> In Function Power On."); BridgePowerOn(); System.Threading.Thread.Sleep(Config.Delay.BridgePowerON); //BridgeGetDUTAddress(); StateStatus(new StateMachineEventArgs(true, STATE.states.TP_PowerOn, "tp ==> Power On")); } if (state == STATE.states.TP_PowerOff) { Trace.WriteLine("tp ==> In Function Power Off."); BridgePowerOff(); StateStatus(new StateMachineEventArgs(true, STATE.states.TP_PowerOff, "tp ==> Power Off")); } } catch (Exception ex) { Trace.WriteLine("Error: " + ex.Message); //not try to fix the error in this class, directly go to the erorr handler. queue.Clear(); queue.TrimExcess(); queue.Enqueue(STATE.states.error); //save the current un-do state. queue.Enqueue(state); } }
public void working(STATE.states state) { try { if (state == STATE.states.TP_SendSleep1Command) { Trace.WriteLine("tp ==> In Function Sleep1."); byte[] datain = bridge.ReadWrite(0x25, 0x80, 0x04); OnStatusChange(new TPEventArgs(1)); } if (state == STATE.states.TP_SendDeepSleepCommand) { Trace.WriteLine("tp ==> In Function Deep Sleep."); byte[] datain = bridge.ReadWrite(0x25, 0x81, 0x04); OnStatusChange(new TPEventArgs(2)); } if (state == STATE.states.TP_PowerOn) { Trace.WriteLine("tp ==> In Function Power On."); BridgePowerOn(); System.Threading.Thread.Sleep(1000); BridgeGetDUTAddress(); OnStatusChange(new TPEventArgs(0)); } if (state == STATE.states.TP_PowerOff) { Trace.WriteLine("tp ==> In Function Power Off."); BridgePowerOff(); OnStatusChange(new TPEventArgs(4)); } } catch (Exception ex) { Trace.WriteLine("Error: " + ex.Message); //not try to fix the error in this class, directly go to the erorr handler. queue.Clear(); queue.TrimExcess(); queue.Enqueue(STATE.states.error); //save the current un-do state. queue.Enqueue(state); } }
private void thread_ruuning() { mf.states_queue.Enqueue(STATE.states.initialize); mf.states_queue.Enqueue(STATE.states.idle); while (!exit_thread) { lock (mf.states_queue) { m_state = mf.states_queue.Dequeue(); mf.states_queue.TrimExcess(); switch (m_state) { case STATE.states.initialize: //Trace.WriteLine("In State: initalize."); mf.initialize(); break; case STATE.states.error: //Trace.WriteLine("In State: error."); mf.error(); break; case STATE.states.exit: //Trace.WriteLine("In State: exit."); mf.exit(); exit_thread = true; break; case STATE.states.idle: //Trace.WriteLine("In State: idle."); mf.states_queue.Enqueue(STATE.states.idle); mf.idle(); break; case STATE.states.working: default: //Trace.WriteLine("In State: working."); mf.working(m_state); break; } } Thread.Sleep(1); } }
public void error() { Trace.WriteLine("mm ==> In Function error."); //get the failure state STATE.states state = queue.Dequeue(); //if it is not fatal error, then try to fix it. //TO-DO //if it is fatal error queue.Enqueue(STATE.states.exit); try { mm = null; } catch { } }
public void working(STATE.states state) { try { if (state == STATE.states.MM_ReadCurr) { Trace.WriteLine("mm ==> In Function Read Current."); double curr = mm.MeasureChannelCurrent().average; current.Add(curr); StateStatus(new StateMachineEventArgs(true, STATE.states.MM_ReadCurr, (curr * 1000000).ToString())); //convert to uA } if (state == STATE.states.MM_CalcSleep1Curr) { double sum = 0; double aver = 0; foreach (double temp in current) { sum += temp; } aver = Math.Round((sum / Config.MEAS_TIMES) * 1000000, 2); //convert to uA if ((aver < Config.SLEEP1_MAX) && (aver > Config.SLEEP1_MIN)) { //DisplayResult(new MMResultEventArgs(1, true, aver)); StateStatus(new StateMachineEventArgs(true, STATE.states.MM_CalcSleep1Curr, aver.ToString())); } else { StateStatus(new StateMachineEventArgs(false, STATE.states.MM_CalcSleep1Curr, aver.ToString())); } current.Clear(); } if (state == STATE.states.MM_CalcDeepSleepCurr) { double sum = 0; double aver = 0; foreach (double temp in current) { sum += temp; } aver = Math.Round((sum / Config.MEAS_TIMES) * 1000000, 2); if ((aver < Config.DEEP_SLEEP_MAX) && (aver > Config.DEEP_SLEEP_MIN)) { StateStatus(new StateMachineEventArgs(true, STATE.states.MM_CalcDeepSleepCurr, aver.ToString())); } else { StateStatus(new StateMachineEventArgs(false, STATE.states.MM_CalcDeepSleepCurr, aver.ToString())); } current.Clear(); } } catch (Exception ex) { Trace.WriteLine("Error: " + ex.Message); //not try to fix the error in this class, directly go to the erorr handler. queue.Clear(); queue.TrimExcess(); queue.Enqueue(STATE.states.error); //save the current un-do state. queue.Enqueue(state); } }
public StateMachineEventArgs(bool pass_or_fail, STATE.states current_state, string message) { pf = pass_or_fail; st = current_state; ms = message; }