private void buttonConnect_Click(object sender, EventArgs e) { try { //Instant Trackpad Function tp_function = new TrackpadFunction(); tp_thread = new StatesThread(tp_function); //Register Trackpad Event tp_function.STEvent += new TrackpadFunction.StateEventHandler(tp_function_STEvent); //Instant MultiMeter Fucntion mm_fucntion = new MutliMeterFunction(); mm_thread = new StatesThread(mm_fucntion); //Register MultiMeter Event mm_fucntion.STEvent += new MutliMeterFunction.StateEventHandler(mm_fucntion_STEvent); tp_thread.run(); mm_thread.run(); } catch (Exception ex) { Trace.WriteLine("Error: " + ex.Message); tp_function = null; tp_thread = null; mm_fucntion = null; mm_thread = null; } }
/// <summary> /// The StateMachine EVENT of class MultiMeter /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mm_fucntion_STEvent(object sender, StateMachineEventArgs e) { //Multi-Meter Init if (e.CurrentState == STATE.states.initialize) { if (e.PassOrFail) { mm_ready = true; if (tp_ready) { EnableButtonConnect(false); EnableButtonSleep(true); EnableButtonDeepSleep(true); } } } //Multi-Meter Exit if (e.CurrentState == STATE.states.exit) { if (tp_ready) { try { EnableButtonConnect(true); EnableButtonSleep(false); EnableButtonDeepSleep(false); serialNumberScanned = false; SetTxtBoxSN(""); tp_thread.exit(); } catch { } } mm_fucntion = null; mm_thread = null; mm_ready = false; } //sleep1 current if (e.CurrentState == STATE.states.MM_CalcSleep1Curr) { sleep1_test_done = true; dut.IDDValue_Sleep = Convert.ToDouble(e.Message); SetListBoxStatus(false, "Sleep1 Current:" + e.Message + "uA"); if (e.PassOrFail) { SetTextBoxSleepResult("PASS", Color.Green); //Log.info("[" + serialNumber + "]" + "Sleep1 PASS:\t\t\t" + e.Average.ToString() + "uA"); } else { SetTextBoxSleepResult("FAIL", Color.Red); //Log.info("[" + serialNumber + "]" + "Sleep1 FAIL:\t\t\t" + e.Average.ToString() + "uA"); if (dut.ErrorCode == 0) { dut.ErrorCode += ErrorCode.ERROR_IDD_HIGH; } //No need to test the deep sleep. deepsleep_test_done = true; } tp_thread.en_queue(STATE.states.TP_PowerOff); if (sleep1_test_done && deepsleep_test_done) { serialNumberScanned = false; SetTxtBoxSN(""); WriteTestReport(); if (Config.ONLINE) { UploadResult(); } dut = null; } } //deep sleep current if (e.CurrentState==STATE.states.MM_CalcDeepSleepCurr) { deepsleep_test_done = true; dut.IDDValue_DeepSleep = Convert.ToDouble(e.Message); SetListBoxStatus(false, "Deep Sleep Current:" + e.Message + "uA"); if (e.PassOrFail) { SetTextBoxDeepSleepResult("PASS", Color.Green); //Log.info("[" + serialNumber + "]" + "Deep Sleep PASS:\t\t" + e.Average.ToString() + "uA"); } else { SetTextBoxDeepSleepResult("FAIL", Color.Red); //Log.info("[" + serialNumber + "]" + "Deep Sleep FAIL:\t\t" + e.Average.ToString() + "uA"); if (dut.ErrorCode == 0) { dut.ErrorCode = ErrorCode.ERROR_IDD_LOW; } //No need to test the sleep1. sleep1_test_done = true; } tp_thread.en_queue(STATE.states.TP_PowerOff); if (sleep1_test_done && deepsleep_test_done) { serialNumberScanned = false; SetTxtBoxSN(""); WriteTestReport(); if (Config.ONLINE) { UploadResult(); } dut = null; } } if (e.CurrentState == STATE.states.MM_ReadCurr) { SetListBoxStatus(false, "Current: " + e.Message + "uA"); } }
/// <summary> /// The StateMachine EVENT of class TP /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tp_function_STEvent(object sender, StateMachineEventArgs e) { //trackpad thread init if (e.CurrentState == STATE.states.initialize) { if (e.PassOrFail) { tp_ready=true; if (mm_ready) { EnableButtonConnect(false); EnableButtonSleep(true); EnableButtonDeepSleep(true); } } } //Trackpad thread exit if (e.CurrentState == STATE.states.exit) { if (mm_ready) { try { EnableButtonConnect(true); EnableButtonSleep(false); EnableButtonDeepSleep(false); serialNumberScanned = false; SetTxtBoxSN(""); mm_thread.exit(); } catch { } } tp_ready = false; tp_function = null; tp_thread = null; } //Trackpad Power On if (e.CurrentState == STATE.states.TP_PowerOn) { } //Sleep1 if (e.CurrentState == STATE.states.TP_SendSleep1Command) { System.Threading.Thread.Sleep(Config.Delay.EnterSleepMode); List<STATE.states> MM_STATES = new List<STATE.states>(); for (int i = 0; i < Config.MEAS_TIMES; i++) { MM_STATES.Add(STATE.states.MM_ReadCurr); } MM_STATES.Add(STATE.states.MM_CalcSleep1Curr); mm_thread.en_queue(MM_STATES); } //Deep Sleep if (e.CurrentState==STATE.states.TP_SendDeepSleepCommand) { System.Threading.Thread.Sleep(Config.Delay.EnterSleepMode); List<STATE.states> MM_STATES = new List<STATE.states>(); for (int i = 0; i < Config.MEAS_TIMES; i++) { MM_STATES.Add(STATE.states.MM_ReadCurr); } MM_STATES.Add(STATE.states.MM_CalcDeepSleepCurr); mm_thread.en_queue(MM_STATES); } //Trackpad Power Off if (e.CurrentState==STATE.states.TP_PowerOff) { //mm_thread.en_queue(STATE.states.idle); } }
private void tp_function_STEvent(object sender, StateMachineEventArgs e) { if (e.CurrentState == STATE.states.initialize) { if (e.PassOrFail) { tp_ready=true; if (mm_ready) { EnableButtonConnect(false); EnableButtonSleep(true); EnableButtonDeepSleep(true); } } } if (e.CurrentState == STATE.states.exit) { try { mm_thread.exit(); EnableButtonConnect(true); EnableButtonSleep(false); EnableButtonDeepSleep(false); serialNumberScanned = false; SetTxtBoxSN(""); } catch { } tp_function = null; tp_thread = null; } }