public static async Task <bool> CheckComm() { return(await Task <bool> .Run(() => { General.PowerSupply(true); return General.CheckDemo表示(); })); }
private void Page_Unloaded(object sender, RoutedEventArgs e) { General.PowerSupply(false); if (!IsPortOpen) { Target.OpenPort(); } }
public static async Task<bool> CheckVref() { string HexStr = ""; bool result = false; try { return await Task<bool>.Run(() => { //一回電源OFF→ONして再確認 General.PowerSupply(true); Sleep(2000); //デモ画面確認 if (!General.CheckDemo表示()) return false; //通信ログクリア General.ClearCommlog(); Target.SendData("@VREF*"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) return false; if (General.CountNewline() == 2) break; } Target.Escape(); var log = State.VmComm.RX; var FoundIndex = log.IndexOf("@VREF*,"); var 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); HexStr = dataList[1].Substring(1);//一文字目がスペースなので削除する State.VmTestResults.Vref_Re = HexStr + "h"; var vrefData = State.VmTestResults.Vref.Trim('h');//末尾にhが付加されている result = (HexStr == vrefData); return result; }); } catch { return false; } finally { General.PowerSupply(false); //VMの更新 State.VmTestResults.ColVref_Re = result ? OffBrush : NgBrush; } }
public static async Task<bool> SetVref() { string HexStr = ""; bool result = false; try { return await Task<bool>.Run(() => { Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) return false; Target.SendData("VREFSET"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) return false; if (General.CountNewline() == 2) break; } Target.Escape(); var log = State.VmComm.RX; var FoundIndex = log.IndexOf("VREFSET,"); var 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); HexStr = dataList[2].Substring(1);//一文字目がスペースなので削除する State.VmTestResults.Vref = HexStr + "h"; var value = Convert.ToInt32(HexStr, 16); return result = (Convert.ToInt32(State.TestSpec.Vref調整_Min, 16) <= value && value <= Convert.ToInt32(State.TestSpec.Vref調整_Max, 16)); }); } catch { return false; } finally { General.PowerSupply(false); Sleep(2000); //VMの更新 State.VmTestResults.ColVref_Re = result ? OffBrush : NgBrush; } }
public static async Task <bool> Set() { return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Sleep(1500); return SetFG_6Vrms();//ファンクションジェネレータを調整する })); }
public static async Task <bool> WriteFw() { bool result = false; try { Target.ClosePort();//FDTとバッティングするためいったん閉じる var dialog = new DialogPic("SW1-7番をONしてください", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } General.PowerSupply(true); Sleep(1000); result = await FDT.WriteFirmware(Constants.FdtPath, State.TestSpec.FirmwareSum); General.PowerSupply(false); //電源ON→OFF Target.OpenPort(); //次ステップに備えてポートを開いておく return(result); } catch { return(result = false); } finally { if (result) { var dialog = new DialogPic("①SW1-7番をOFFしてください\r\n②SW2、SW3をすべてONしてください", DialogPic.NAME.その他); dialog.ShowDialog(); } else { State.VmTestStatus.Spec = "規格値 : チェックサム "; State.VmTestStatus.MeasValue = "計測値 : チェックサム "; } } }
public static async Task <bool> CheckRS485_1() { try { return(await Task <bool> .Run(() => { Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("RS485_1"); while (true)//取り込んだ通信データが7行以上になるまで待つ { if (Flags.ClickStopButton) { return false; } if (General.CountNewline() == 3) { break; } } return (State.VmComm.RX.IndexOf("485(2w) Host->Mst/Slv[19200dbps] = OK") >= 0) && (State.VmComm.RX.IndexOf("485(2w) Mst/Slv->Host[19200dbps] = OK") >= 0); })); } catch { return(false); } finally { General.PowerSupply(false); } }
public static async Task <bool> CheckRS232C() { try { return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("RS232C"); while (true)//取り込んだ通信データが7行以上になるまで待つ { if (Flags.ClickStopButton) { return false; } if (General.CountNewline() == 2) { break; } } return (State.VmComm.RX.IndexOf("232C Host->Host(loopback)[19200dbps] = OK") >= 0); })); } catch { return(false); } finally { General.PowerSupply(false); } }
public static async Task <bool> Check警報点() { bool result = false; 警報点抵抗値 = 0; try { General.SetCn10to6ダイヤル抵抗(); var dialog = new DialogPic("6ダイヤル抵抗器を157.1オームに設定してね", DialogPic.NAME.その他); dialog.ShowDialog(); General.PowerSupply(true); await Task.Delay(2000); dialog = new DialogPic("抵抗値を少しずつ上げて、\r\nチェッカーの温度警報ランプが点灯したらOKを押してね", DialogPic.NAME.その他); dialog.ShowDialog(); var dialoginput = new DialogInput(); dialoginput.ShowDialog(); var resValue = Double.Parse(State.VmTestResults.AlarmPoint); result = (State.TestSpec.警報発報点_Min <= resValue && resValue <= State.TestSpec.警報発報点_Max); return(result); } catch { return(false); } finally { General.PowerSupply(false); //VM更新 State.VmTestResults.AlarmPoint += "Ω";//finally句に入る前は、数値だけが入力されているので注意 State.VmTestResults.ColAlarmPoint = result ? OffBrush : NgBrush; } }
public static async Task <bool> CheckDISP() { try { var re = await Task <bool> .Run(() => { Sleep(1000); //電源ONする処理 General.PowerSupply(true); return(General.CheckDemo表示()); }); if (!re) { return(false); } var mess = "OKボタンを押して表示基板の検査をしてください\r\n①LEDが左上から順に点灯すること\r\n②0~9の数字が順に点灯すること\r\n③各ボタンを押しブザーが鳴ること"; var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); Target.SendData("DISP"); await Task.Delay(5000); dialog = new DialogPic("表示基板の機能は正常ですか?", DialogPic.NAME.その他); dialog.ShowDialog(); return(Flags.DialogReturn); } catch { return(false); } finally { General.PowerSupply(false); } }
public static async Task <bool> SetInputI(NAME name) { bool result第一調整点 = false; bool result第二調整点 = false; string Data第一調整点 = ""; string Data第二調整点 = ""; string Data第一調整点再 = ""; string Data第二調整点再 = ""; State.VmTestStatus.TestLog += $" {name.ToString()} 調整"; //ローカルの定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ string GetData(string command) { General.ClearCommlog(); Target.SendData(command); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf(command + ","); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(dataList[2].Substring(1));//一文字目がスペースなので削除 }; List <string> GetData再(string command) { General.ClearCommlog(); Target.SendData(command); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf(command + ","); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(new List <string>() { dataList[1].Substring(1), dataList[2].Substring(1) }); //一文字目がスペースなので削除 }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { return(await Task <bool> .Run(() => { SetSourc(name); Sleep(1000); string command = ""; switch (name) { case NAME.I_1: //MessageBox.Show("CN2にシグナルソース(電流端子)を接続してください"); command = "I1"; break; case NAME.I_2: //MessageBox.Show("CN4にシグナルソース(電流端子)を接続してください"); command = "I2"; break; case NAME.I_3: //MessageBox.Show("CN6にシグナルソース(電流端子)を接続してください"); command = "I3"; break; case NAME.I_4: //MessageBox.Show("CN8にシグナルソース(電流端子)を接続してください"); command = "I4"; break; } Sleep(500); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } HIOKI7012.OutDcI(0.000); Sleep(2000); Data第一調整点 = GetData(command + "1"); if (Data第一調整点 == null) { return false; } Sleep(500); HIOKI7012.OutDcI(20.000); Sleep(2000); Data第二調整点 = GetData(command + "2"); if (Data第二調整点 == null) { return false; } Sleep(500); HIOKI7012.StopSource(); General.PowerSupply(false); Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } var ListData再 = GetData再("@" + command + "*"); if (ListData再 == null) { return false; } Data第一調整点再 = ListData再[0]; Data第二調整点再 = ListData再[1]; result第一調整点 = Data第一調整点 == Data第一調整点再; result第二調整点 = Data第二調整点 == Data第二調整点再; return result第一調整点 && result第二調整点; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result第一調整点 && result第二調整点? "---PASS\r\n" :"---FAIL\r\n"; HIOKI7012.StopSource(); General.PowerSupply(false); switch (name) { case NAME.I_1: State.VmTestResults.I1_1 = Data第一調整点 + "h"; State.VmTestResults.I1_2 = Data第二調整点 + "h"; State.VmTestResults.I1_1RE = Data第一調整点再 + "h"; State.VmTestResults.I1_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColI1_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI1_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI1_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI1_2RE = result第二調整点 ? OffBrush : NgBrush; break; case NAME.I_2: State.VmTestResults.I2_1 = Data第一調整点 + "h"; State.VmTestResults.I2_2 = Data第二調整点 + "h"; State.VmTestResults.I2_1RE = Data第一調整点再 + "h"; State.VmTestResults.I2_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColI2_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI2_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI2_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI2_2RE = result第二調整点 ? OffBrush : NgBrush; break; case NAME.I_3: State.VmTestResults.I3_1 = Data第一調整点 + "h"; State.VmTestResults.I3_2 = Data第二調整点 + "h"; State.VmTestResults.I3_1RE = Data第一調整点再 + "h"; State.VmTestResults.I3_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColI3_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI3_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI3_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI3_2RE = result第二調整点 ? OffBrush : NgBrush; break; case NAME.I_4: State.VmTestResults.I4_1 = Data第一調整点 + "h"; State.VmTestResults.I4_2 = Data第二調整点 + "h"; State.VmTestResults.I4_1RE = Data第一調整点再 + "h"; State.VmTestResults.I4_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColI4_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI4_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI4_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColI4_2RE = result第二調整点 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckInputI(NAME name) { await Task.Delay(1500); bool result = false; bool result下限 = false; bool result上限 = false; string resultData = ""; const int SampleCnt = 5; var ListData = new List <double>(); State.VmTestStatus.TestLog += $" {name.ToString()} 10mA確認"; //ラムダ式の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Action GetData = () => { General.ClearCommlog(); Target.SendData("I_IN"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return; } if (General.CountNewline() == SampleCnt + 2) { break; } } Target.Escape(); int offset = 0; switch (name) { case NAME.I_1: offset = 1; break; case NAME.I_2: offset = 2; break; case NAME.I_3: offset = 3; break; case NAME.I_4: offset = 4; break; } int 検索開始位置 = 0; var log = State.VmComm.RX; foreach (var i in Enumerable.Range(0, SampleCnt)) { int FoundIndex = log.IndexOf("I_IN,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); ListData.Add(Double.Parse(dataList[offset])); 検索開始位置 = FoundIndex + 1; } }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { return(await Task <bool> .Run(() => { SetSourc(name); Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } HIOKI7012.OutDcI(10.000); Sleep(2000); GetData(); Sleep(500); HIOKI7012.StopSource(); General.PowerSupply(false); result下限 = ListData.All(data => data >= State.TestSpec.I_10mA_Min); result上限 = ListData.All(data => data <= State.TestSpec.I_10mA_Max); result = result下限 && result上限; ListData.Sort(); if (result) { resultData = ListData[SampleCnt / 2].ToString("F3") + "mA";//中央値 } else { if (!result下限) { resultData = ListData[0].ToString("F3") + "mA";//Min } else { resultData = ListData[SampleCnt - 1].ToString("F3") + "mA";//Max } } return result; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result? "---PASS\r\n" :"---FAIL\r\n"; HIOKI7012.StopSource(); General.PowerSupply(false); switch (name) { case NAME.I_1: State.VmTestResults.I1_10mA = resultData; State.VmTestResults.ColI1_10mA = result ? OffBrush : NgBrush; break; case NAME.I_2: State.VmTestResults.I2_10mA = resultData; State.VmTestResults.ColI2_10mA = result ? OffBrush : NgBrush; break; case NAME.I_3: State.VmTestResults.I3_10mA = resultData; State.VmTestResults.ColI3_10mA = result ? OffBrush : NgBrush; break; case NAME.I_4: State.VmTestResults.I4_10mA = resultData; State.VmTestResults.ColI4_10mA = result ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckDIN(MODE mode) { ErrMessage = ""; bool result = false; bool rePA = false; bool rePB = false; bool rePC = false; bool rePE = false; bool rePH = false; bool rePL = false; string ExPA = ""; string ExPB = ""; string ExPC = ""; string ExPE = ""; string ExPH = ""; string ExPL = ""; string DataPA = ""; string DataPB = ""; string DataPC = ""; string DataPE = ""; string DataPH = ""; string DataPL = ""; try { var dialog = new DialogPic(mode == MODE.OFF ? "赤枠のスイッチをすべてOFF(↓)にしてください" : "赤枠のスイッチをすべてON(↑)にしてください", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("DIN"); while (true) { if (Flags.ClickStopButton) { return false; } if (General.CountNewline() == 5) { break; } } Target.Escape(); var log = State.VmComm.RX; int FoundIndex = log.IndexOf("DIN,", 0); DataPA = log.Substring(FoundIndex + 5, 4); DataPB = log.Substring(FoundIndex + 11, 4); DataPC = log.Substring(FoundIndex + 17, 4); DataPE = log.Substring(FoundIndex + 23, 4); DataPH = log.Substring(FoundIndex + 29, 4); DataPL = log.Substring(FoundIndex + 35, 4); switch (mode) { case MODE.OFF: ExPA = OFF_PA; ExPB = OFF_PB; ExPC = OFF_PC; ExPE = OFF_PE; ExPH = OFF_PH; ExPL = OFF_PL; break; case MODE.ON: ExPA = ON_PA; ExPB = ON_PB; ExPC = ON_PC; ExPE = ON_PE; ExPH = ON_PH; ExPL = ON_PL; break; } rePA = (DataPA == ExPA); rePB = (DataPB == ExPB); rePC = (DataPC == ExPC); rePE = (DataPE == ExPE); rePH = (DataPH == ExPH); rePL = (DataPL == ExPL); result = rePA && rePB && rePC && rePE && rePH && rePL; //エラーメッセージの作成 ErrMessage += rePA ? "" : ERR_PA + "\r\n"; ErrMessage += rePB ? "" : ERR_PB + "\r\n"; ErrMessage += rePC ? "" : ERR_PC + "\r\n"; ErrMessage += rePE ? "" : ERR_PE + "\r\n"; ErrMessage += rePH ? "" : ERR_PH + "\r\n"; ErrMessage += rePL ? "" : ERR_PL + "\r\n"; ErrMessage += "の接続を確認してください"; return result; })); } catch { return(false); } finally { General.PowerSupply(false); if (mode == MODE.OFF) { VmTestResults.PA_OFF = DataPA; VmTestResults.PB_OFF = DataPB; VmTestResults.PC_OFF = DataPC; VmTestResults.PE_OFF = DataPE; VmTestResults.PH_OFF = DataPH; VmTestResults.PL_OFF = DataPL; VmTestResults.ColPA_OFF = rePA ? OffBrush : NgBrush; VmTestResults.ColPB_OFF = rePB ? OffBrush : NgBrush; VmTestResults.ColPC_OFF = rePC ? OffBrush : NgBrush; VmTestResults.ColPE_OFF = rePE ? OffBrush : NgBrush; VmTestResults.ColPH_OFF = rePH ? OffBrush : NgBrush; VmTestResults.ColPL_OFF = rePL ? OffBrush : NgBrush; } else { VmTestResults.PA_ON = DataPA; VmTestResults.PB_ON = DataPB; VmTestResults.PC_ON = DataPC; VmTestResults.PE_ON = DataPE; VmTestResults.PH_ON = DataPH; VmTestResults.PL_ON = DataPL; VmTestResults.ColPA_ON = rePA ? OffBrush : NgBrush; VmTestResults.ColPB_ON = rePB ? OffBrush : NgBrush; VmTestResults.ColPC_ON = rePC ? OffBrush : NgBrush; VmTestResults.ColPE_ON = rePE ? OffBrush : NgBrush; VmTestResults.ColPH_ON = rePH ? OffBrush : NgBrush; VmTestResults.ColPL_ON = rePL ? OffBrush : NgBrush; } if (mode == MODE.ON) { var dialog = new DialogPic("赤枠のスイッチをすべてOFF(↓)に戻してください", DialogPic.NAME.その他); dialog.ShowDialog(); await Task.Delay(300); } } }
public static async Task <bool> CheckPWVOUT(DV_CH ch) { bool result0 = false; bool result50 = false; bool result100 = false; string Data0 = ""; string Data50 = ""; string Data100 = ""; try { return(await Task <bool> .Run(() => { switch (ch) { case DV_CH.DV2: General.Set7012Meas(General.MEAS_CH.DV2); break; case DV_CH.DV4: General.Set7012Meas(General.MEAS_CH.DV4); break; case DV_CH.DV6: General.Set7012Meas(General.MEAS_CH.DV6); break; case DV_CH.DV8: General.Set7012Meas(General.MEAS_CH.DV8); break; } //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("PWVOUT 0 0 0 0"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData; Target.SendData("PWVOUT 50 50 50 50"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas50 = HIOKI7012.VoltData; Target.SendData("PWVOUT 100 100 100 100"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas100 = HIOKI7012.VoltData; result0 = (State.TestSpec.Vout_0_Min <= Meas0 && Meas0 <= State.TestSpec.Vout_0_Max); result50 = (State.TestSpec.Vout_50_Min <= Meas50 && Meas50 <= State.TestSpec.Vout_50_Max); result100 = (State.TestSpec.Vout_100_Min <= Meas100 && Meas100 <= State.TestSpec.Vout_100_Max); Data0 = Meas0.ToString("F2") + "V"; Data50 = Meas50.ToString("F2") + "V"; Data100 = Meas100.ToString("F2") + "V"; return result0 && result50 && result100; })); } catch { return(false); } finally { General.PowerSupply(false); switch (ch) { case DV_CH.DV2: State.VmTestResults.DV2_0 = Data0; State.VmTestResults.DV2_50 = Data50; State.VmTestResults.DV2_100 = Data100; State.VmTestResults.ColDV2_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV2_50 = result50 ? OffBrush : NgBrush; State.VmTestResults.ColDV2_100 = result100 ? OffBrush : NgBrush; break; case DV_CH.DV4: State.VmTestResults.DV4_0 = Data0; State.VmTestResults.DV4_50 = Data50; State.VmTestResults.DV4_100 = Data100; State.VmTestResults.ColDV4_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV4_50 = result50 ? OffBrush : NgBrush; State.VmTestResults.ColDV4_100 = result100 ? OffBrush : NgBrush; break; case DV_CH.DV6: State.VmTestResults.DV6_0 = Data0; State.VmTestResults.DV6_50 = Data50; State.VmTestResults.DV6_100 = Data100; State.VmTestResults.ColDV6_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV6_50 = result50 ? OffBrush : NgBrush; State.VmTestResults.ColDV6_100 = result100 ? OffBrush : NgBrush; break; case DV_CH.DV8: State.VmTestResults.DV8_0 = Data0; State.VmTestResults.DV8_50 = Data50; State.VmTestResults.DV8_100 = Data100; State.VmTestResults.ColDV8_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV8_50 = result50 ? OffBrush : NgBrush; State.VmTestResults.ColDV8_100 = result100 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckPWTMP_V(DV_CH ch) { bool result0 = false; bool result40 = false; bool result75 = false; string Data0 = ""; string Data40 = ""; string Data75 = ""; try { return(await Task <bool> .Run(() => { switch (ch) { case DV_CH.DV10: General.Set7012Meas(General.MEAS_CH.DV10); break; case DV_CH.DV12: General.Set7012Meas(General.MEAS_CH.DV12); break; } //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("PWTMP_V 0 0"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData; Target.SendData("PWTMP_V 40 40"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas40 = HIOKI7012.VoltData; Target.SendData("PWTMP_V 75 75"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas75 = HIOKI7012.VoltData; result0 = (State.TestSpec.Temp_V_0_Min <= Meas0 && Meas0 <= State.TestSpec.Temp_V_0_Max); result40 = (State.TestSpec.Temp_V_40_Min <= Meas40 && Meas40 <= State.TestSpec.Temp_V_40_Max); result75 = (State.TestSpec.Temp_V_75_Min <= Meas75 && Meas75 <= State.TestSpec.Temp_V_75_Max); Data0 = Meas0.ToString("F2") + "V"; Data40 = Meas40.ToString("F2") + "V"; Data75 = Meas75.ToString("F2") + "V"; return result0 && result40 && result75; })); } catch { return(false); } finally { General.PowerSupply(false); switch (ch) { case DV_CH.DV10: State.VmTestResults.DV10_0 = Data0; State.VmTestResults.DV10_40 = Data40; State.VmTestResults.DV10_75 = Data75; State.VmTestResults.ColDV10_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV10_40 = result40 ? OffBrush : NgBrush; State.VmTestResults.ColDV10_75 = result75 ? OffBrush : NgBrush; break; case DV_CH.DV12: State.VmTestResults.DV12_0 = Data0; State.VmTestResults.DV12_40 = Data40; State.VmTestResults.DV12_75 = Data75; State.VmTestResults.ColDV12_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV12_40 = result40 ? OffBrush : NgBrush; State.VmTestResults.ColDV12_75 = result75 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckPWPV(MODE mode) { try { var mess = ""; switch (mode) { case MODE.Motor_L: mess = "パルスモータが ひだり に4回転するのを確認してください\r\nA(左) → B(右)の順に回ります\r\nOKボタンを押すと回ります"; break; case MODE.Motor_R: mess = "パルスモータが みぎ に4回転するのを確認してください\r\nA(左) → B(右)の順に回ります\r\nOKボタンを押すと回ります"; break; } var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); var re = await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return(false); } switch (mode) { case MODE.Motor_L: Target.SendData("PWPV1 800 0"); //モータA 左回転 var tm = new GeneralTimer(11000); tm.Start(); while (true) { if (tm.FlagTimeout) { return(false); } if (State.VmComm.RX.Contains(">>")) { break; } } Sleep(150); General.ClearCommlog(); Target.SendData("PWPV2 800 0"); //モータB 左回転 tm.Start(); while (true) { if (tm.FlagTimeout) { return(false); } if (State.VmComm.RX.Contains(">>")) { break; } } break; case MODE.Motor_R: Target.SendData("PWPV1 0 800"); //モータA 右回転 var tm2 = new GeneralTimer(11000); tm2.Start(); while (true) { if (tm2.FlagTimeout) { return(false); } if (State.VmComm.RX.Contains(">>")) { break; } } Sleep(150); General.ClearCommlog(); Target.SendData("PWPV2 0 800"); //モータB 右回転 tm2.Start(); while (true) { if (tm2.FlagTimeout) { return(false); } if (State.VmComm.RX.Contains(">>")) { break; } } break; } return(true); }); if (!re) { return(false); } dialog = new DialogPic("モータが正しく回転しましたか?", DialogPic.NAME.その他, soundSw: false); dialog.ShowDialog(); return(Flags.DialogReturn); } catch { return(false); } finally { General.PowerSupply(false); } }
const int numSamples = 3; //サンプリング数はここで変更する //※奇数で指定すること(中央値を計測結果として表示するため) public static async Task <bool> CheckANA1_P(CH ch) { bool result0v = false; bool result5v = false; bool result10v = false; bool result0v下限 = false; bool result0v上限 = false; bool result5v下限 = false; bool result5v上限 = false; bool result10v下限 = false; bool result10v上限 = false; string Data0v = ""; string Data5v = ""; string Data10v = ""; int offset = 0; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ List <double> GetData(double OutVal) { General.ClearCommlog(); //シグナルソースから電圧出力 HIOKI7012.OutDcV(OutVal); Sleep(1000); Target.SendData("ANA1_P"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == numSamples + 1) { break; } } Target.Escape(); Sleep(1500); HIOKI7012.StopSource(); Sleep(400); int 検索開始位置 = 0; var List = new List <double>(); foreach (var i in Enumerable.Range(0, numSamples)) { var log = State.VmComm.RX; int FoundIndex = log.IndexOf("ANA1_P,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); List.Add(Double.Parse(dataList[offset])); 検索開始位置 = FoundIndex + 1; } return(List); }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { return(await Task <bool> .Run(() => { switch (ch) { case CH.ANA0: offset = offsetAna0; Set7012Source(SOURCE_CH.A0); break; case CH.ANA1: offset = offsetAna1; Set7012Source(SOURCE_CH.A1); break; case CH.ANA2: offset = offsetAna2; Set7012Source(SOURCE_CH.A2); break; case CH.ANA3: offset = offsetAna3; Set7012Source(SOURCE_CH.A3); break; case CH.ANA4: offset = offsetAna4; Set7012Source(SOURCE_CH.A4); break; case CH.ANA5: offset = offsetAna5; Set7012Source(SOURCE_CH.A5); break; case CH.ANA6: offset = offsetAna6; Set7012Source(SOURCE_CH.A6); break; case CH.ANA7: offset = offsetAna7; Set7012Source(SOURCE_CH.A7); break; case CH.ANA8: offset = offsetAna8; Set7012Source(SOURCE_CH.A8); break; case CH.ANA9: offset = offsetAna9; Set7012Source(SOURCE_CH.A9); break; case CH.ANA10: offset = offsetAna10; Set7012Source(SOURCE_CH.A10); break; case CH.ANA11: offset = offsetAna11; Set7012Source(SOURCE_CH.A11); break; } //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } var List_Data0v = GetData(0.0); var List_Data5v = GetData(5.0); var List_Data10v = GetData(10.0); if (List_Data0v == null || List_Data5v == null || List_Data10v == null) { return false; } result0v下限 = List_Data0v.All(data => data >= State.TestSpec.AdInput_0Min); result0v上限 = List_Data0v.All(data => data <= State.TestSpec.AdInput_0Max); result0v = result0v下限 && result0v上限; result5v下限 = List_Data5v.All(data => data >= State.TestSpec.AdInput_5Min); result5v上限 = List_Data5v.All(data => data <= State.TestSpec.AdInput_5Max); result5v = result5v下限 && result5v上限; result10v下限 = List_Data10v.All(data => data >= State.TestSpec.AdInput_10Min); result10v上限 = List_Data10v.All(data => data <= State.TestSpec.AdInput_10Max); result10v = result10v下限 && result10v上限; List_Data0v.Sort(); if (result0v) { Data0v = List_Data0v[numSamples / 2].ToString("F3");//中央値 } else { if (!result0v下限) { Data0v = List_Data0v[0].ToString("F3");//Min } else { Data0v = List_Data0v[numSamples - 1].ToString("F3");//Max } } List_Data5v.Sort(); if (result5v) { Data5v = List_Data5v[numSamples / 2].ToString("F3");//中央値 } else { if (!result5v下限) { Data5v = List_Data5v[0].ToString("F3");//Min } else { Data5v = List_Data5v[numSamples - 1].ToString("F3");//Max } } List_Data10v.Sort(); if (result10v) { Data10v = List_Data10v[numSamples / 2].ToString("F3");//中央値 } else { if (!result10v下限) { Data10v = List_Data10v[0].ToString("F3");//Min } else { Data10v = List_Data10v[numSamples - 1].ToString("F3");//Max } } return result0v && result5v && result10v; })); } catch { return(false); } finally { General.PowerSupply(false); Sleep(300); //ビューモデルの更新 switch (ch) { case CH.ANA0: State.VmTestResults.A0_0 = Data0v; State.VmTestResults.A0_5 = Data5v; State.VmTestResults.A0_10 = Data10v; State.VmTestResults.ColA0_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA0_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA0_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA1: State.VmTestResults.A1_0 = Data0v; State.VmTestResults.A1_5 = Data5v; State.VmTestResults.A1_10 = Data10v; State.VmTestResults.ColA1_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA1_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA1_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA2: State.VmTestResults.A2_0 = Data0v; State.VmTestResults.A2_5 = Data5v; State.VmTestResults.A2_10 = Data10v; State.VmTestResults.ColA2_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA2_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA2_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA3: State.VmTestResults.A3_0 = Data0v; State.VmTestResults.A3_5 = Data5v; State.VmTestResults.A3_10 = Data10v; State.VmTestResults.ColA3_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA3_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA3_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA4: State.VmTestResults.A4_0 = Data0v; State.VmTestResults.A4_5 = Data5v; State.VmTestResults.A4_10 = Data10v; State.VmTestResults.ColA4_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA4_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA4_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA5: State.VmTestResults.A5_0 = Data0v; State.VmTestResults.A5_5 = Data5v; State.VmTestResults.A5_10 = Data10v; State.VmTestResults.ColA5_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA5_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA5_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA6: State.VmTestResults.A6_0 = Data0v; State.VmTestResults.A6_5 = Data5v; State.VmTestResults.A6_10 = Data10v; State.VmTestResults.ColA6_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA6_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA6_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA7: State.VmTestResults.A7_0 = Data0v; State.VmTestResults.A7_5 = Data5v; State.VmTestResults.A7_10 = Data10v; State.VmTestResults.ColA7_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA7_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA7_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA8: State.VmTestResults.A8_0 = Data0v; State.VmTestResults.A8_5 = Data5v; State.VmTestResults.A8_10 = Data10v; State.VmTestResults.ColA8_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA8_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA8_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA9: State.VmTestResults.A9_0 = Data0v; State.VmTestResults.A9_5 = Data5v; State.VmTestResults.A9_10 = Data10v; State.VmTestResults.ColA9_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA9_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA9_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA10: State.VmTestResults.A10_0 = Data0v; State.VmTestResults.A10_5 = Data5v; State.VmTestResults.A10_10 = Data10v; State.VmTestResults.ColA10_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA10_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA10_10 = result10v ? OffBrush : NgBrush; break; case CH.ANA11: State.VmTestResults.A11_0 = Data0v; State.VmTestResults.A11_5 = Data5v; State.VmTestResults.A11_10 = Data10v; State.VmTestResults.ColA11_0 = result0v ? OffBrush : NgBrush; State.VmTestResults.ColA11_5 = result5v ? OffBrush : NgBrush; State.VmTestResults.ColA11_10 = result10v ? OffBrush : NgBrush; break; } } }
public static async Task <List <double> > GetMasterData(MODE mode) { try { return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return null; } Sleep(1500); if (!SetFG_6Vrms()) { return null; //ファンクションジェネレータを調整する } Sleep(500); //モードによりオシロの設定を変更する(時間軸の設定のみ) if (mode == MODE.位相制御) { General.osc.Set位相制御(); } else { General.osc.Setサイクル制御(); } Sleep(1000); //波形出力コマンド送信 if (mode == MODE.位相制御) { Target.SendData("MVP 50 50"); Sleep(3500); } else { Target.SendData("MVP 50 50"); Sleep(4000); Target.SendData("MVC 50"); Sleep(3500); } //波形データ取得 if (!GetWavData()) { return null; } return FilterData; })); } catch { return(null); } finally { WaveFormGenerator.SourceOff(); General.PowerSupply(false); } }
public static async Task <bool> CheckLeak() { bool result = false; bool result下限 = false; bool result上限 = false; string resultData = ""; const int SampleCnt = 20; State.VmTestStatus.TestLog += " 20kΩ確認"; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ List <double> GetData() { var listData = new List <double>(); Target.SendData("LS_R"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == SampleCnt + 2) { break; } } Target.Escape(); int 検索開始位置 = 0; var log = State.VmComm.RX; foreach (var i in Enumerable.Range(0, SampleCnt)) { int FoundIndex = log.IndexOf("LS_R,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); listData.Add(Double.Parse(dataList[1])); 検索開始位置 = FoundIndex + 1; } return(listData); }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var dialog = new DialogPic("デジタル抵抗器を20kΩに設定してください", DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } var ListData = GetData(); if (ListData == null) { return false; } //最後から5ヶのデータをサンプリング値として取得する(前半は値が安定していない可能性があるため) //15個飛ばして5個を抽出(インデックスが15から20) var 安定後のデータ = ListData.Skip(15).Take(5).ToList <double>(); result下限 = 安定後のデータ.All(data => data >= State.TestSpec.液漏れ20k_Min); result上限 = 安定後のデータ.All(data => data <= State.TestSpec.液漏れ20k_Max); result = result下限 && result上限; 安定後のデータ.Sort(); if (result) { resultData = 安定後のデータ[安定後のデータ.Count() / 2].ToString("F2") + "kΩ";//中央値 } else { if (!result下限) { resultData = 安定後のデータ[0].ToString("F2") + "kΩ";//Min } else { resultData = 安定後のデータ[安定後のデータ.Count() - 1].ToString("F2") + "kΩ";//Max } } return result; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result? "---PASS\r\n" :"---FAIL\r\n"; General.PowerSupply(false); State.VmTestResults.Res20k = resultData; State.VmTestResults.ColRes20k = result ? OffBrush : NgBrush; } }
//メインルーチン public async Task Test() { Flags.Click確認Button = false; Flags.Testing = true; Flags.Retry = false; General.SetMetalMode(); General.SetBgm(); State.VmTestStatus.Message = Constants.MessWait; //現在のテーマ透過度の保存 State.CurrentThemeOpacity = State.VmMainWindow.ThemeOpacity; General.SetRadius(true); State.VmMainWindow.ThemeBlurEffectRadius = 25; await Task.Delay(500); FlagTestTime = true; Timer(); int FailStepNo = 0; int RetryCnt = 0;//リトライ用に使用する string FailTitle = ""; var テスト項目最新 = new List <TestSpecs>(); if (State.VmTestStatus.CheckUnitTest == true) { //チェックしてある項目の百の桁の解析 var re = Int32.Parse(State.VmTestStatus.UnitTestName.Split('_').ToArray()[0]); int 位桁 = Int32.Parse(State.VmTestStatus.UnitTestName.Substring(0, (re >= 1000) ? 2 : 1)); var 抽出データ = State.テスト項目.Where(p => (p.Key / 100) == 位桁); foreach (var p in 抽出データ) { テスト項目最新.Add(new TestSpecs(p.Key, p.Value, p.PowSw)); } } else { テスト項目最新 = State.テスト項目; } try { //IO初期化 General.ResetIo(); Thread.Sleep(400); foreach (var d in テスト項目最新.Select((s, i) => new { i, s })) { Retry: State.VmTestStatus.Spec = "規格値 : ---"; State.VmTestStatus.MeasValue = "計測値 : ---"; Flags.AddDecision = true; //試験開始時は、CN10はチェッカー側ハーネスに接続する General.SetCn10to6ダイヤル抵抗(); //General.SetCn10toChecker(); SetTestLog(d.s.Key.ToString() + "_" + d.s.Value); if (d.s.PowSw) { if (!Flags.PowerOn) { General.PowerSupply(true); } } else { General.PowerSupply(false); await Task.Delay(100); } switch (d.s.Key) { case 100: //コネクタ実装チェック General.io.ReadInputData(EPX64R.PORT.P7); byte re = (byte)(General.io.P7InputData & 0x0F); if (re != 0x00) { goto case 5000; } break; case 200: //テストプログラム書き込み if (State.VmTestStatus.CheckWriteTestFwPass == true) { break; } if (await 書き込み.WriteFw()) { break; } goto case 5000; case 300: //電源電圧チェック +12V if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH._12V)) { break; } goto case 5000; case 301: //電源電圧チェック +5V if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH._5V)) { break; } goto case 5000; case 302: //電源電圧チェック +3.3V if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH._3_3V)) { break; } goto case 5000; case 303: //電源電圧チェック AVDD if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH.AVDD)) { break; } goto case 5000; case 304: //電源電圧チェック AVCC if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH.AVCC)) { break; } goto case 5000; case 305: //電源電圧チェック VREF if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH.VREF)) { break; } goto case 5000; case 306: //電源電圧チェック AVCCD if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH.AVCCD)) { break; } goto case 5000; case 307: //電源電圧チェック S5V if (await TEST_電源電圧.CheckVolt(TEST_電源電圧.VOL_CH.S5V)) { break; } goto case 5000; case 400: //入力回路チェック OFF if (await TEST_入力回路チェック.CheckDIN(TEST_入力回路チェック.MODE.OFF)) { break; } goto case 5000; case 401: //入力回路チェック ON if (await TEST_入力回路チェック.CheckDIN(TEST_入力回路チェック.MODE.ON)) { break; } goto case 5000; case 500: //入力回路チェック OFF if (await TEST_入力回路チェック.CheckANA2_P(TEST_入力回路チェック.MODE.OFF)) { break; } goto case 5000; case 501: //入力回路チェック ON if (await TEST_入力回路チェック.CheckANA2_P(TEST_入力回路チェック.MODE.ON)) { break; } goto case 5000; case 600: //SCR駆動回路チェック 位相制御モード var dialog_600 = new DialogPic("①周波数入力切切替を上向き\r\n②内部電流選択を下向き\r\n③FGと50/60Hz入力を接続\r\n④オシロと電流モニタを接続", DialogPic.NAME.その他); dialog_600.ShowDialog(); await TEST_SCR駆動回路.Set(); //電源ONする処理 if (await TEST_SCR駆動回路.CheckWave(TEST_SCR駆動回路.MODE.位相制御)) { break; } goto case 5000; case 601: //SCR駆動回路チェック サイクル制御モード if (Flags.Retry) { General.PowerSupply(false); await Task.Delay(300); if (!await TEST_SCR駆動回路.Set()) { goto case 5000; } } if (await TEST_SCR駆動回路.CheckWave(TEST_SCR駆動回路.MODE.サイクル制御)) { WaveFormGenerator.SourceOff(); break; } goto case 5000; case 700: //AD入力回路チェック AN_A8 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA8)) { break; } goto case 5000; case 701: //AD入力回路チェック AN_A4 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA4)) { break; } goto case 5000; case 702: //AD入力回路チェック AN_A0 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA0)) { break; } goto case 5000; case 703: //AD入力回路チェック AN_A9 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA9)) { break; } goto case 5000; case 704: //AD入力回路チェック AN_A5 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA5)) { break; } goto case 5000; case 705: //AD入力回路チェック AN_A1 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA1)) { break; } goto case 5000; case 706: //AD入力回路チェック AN_A10 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA10)) { break; } goto case 5000; case 707: //AD入力回路チェック AN_A6 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA6)) { break; } goto case 5000; case 708: //AD入力回路チェック AN_A2 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA2)) { break; } goto case 5000; case 709: //AD入力回路チェック AN_A11 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA11)) { break; } goto case 5000; case 710: //AD入力回路チェック AN_A7 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA7)) { break; } goto case 5000; case 711: //AD入力回路チェック AN_A3 if (await TEST_AD入力チェック.CheckANA1_P(TEST_AD入力チェック.CH.ANA3)) { break; } goto case 5000; case 800: //パルス入力回路チェック(左) if (await TEST_パルス入力回路.CheckFLW(TEST_パルス入力回路.MODE.LEFT)) { break; } goto case 5000; case 801: //パルス入力回路チェック(中) if (await TEST_パルス入力回路.CheckFLW(TEST_パルス入力回路.MODE.MIDDLE)) { break; } goto case 5000; case 802: //パルス入力回路チェック(右) if (await TEST_パルス入力回路.CheckFLW(TEST_パルス入力回路.MODE.RIGHT)) { break; } goto case 5000; case 900: //比例弁回転動作チェック(モータAB 左) if (await TEST_比例弁回転動作.CheckPWPV(TEST_比例弁回転動作.MODE.Motor_L)) { break; } goto case 5000; case 901: //比例弁回転動作チェック(モータAB 右) if (await TEST_比例弁回転動作.CheckPWPV(TEST_比例弁回転動作.MODE.Motor_R)) { break; } goto case 5000; case 1000: //警報用Pt100回路チェック 発報点 if (await TEST_警報点.Check警報点()) { break; } goto case 5000; case 1001: //警報用Pt100回路チェック 断線 if (await TEST_警報点.CheckDisconnection()) { break; } goto case 5000; case 1100: //AC電源電圧読取り回路チェック if (await TEST_出力回路.CheckAN_P(TEST_出力回路.MODE.READ_V)) { break; } goto case 5000; case 1200: //負荷電流読取り回路チェック CT1 if (await TEST_出力回路.CheckAN_P(TEST_出力回路.MODE.READ_I_1)) { break; } goto case 5000; case 1201: //負荷電流読取り回路チェック CT2 if (await TEST_出力回路.CheckAN_P(TEST_出力回路.MODE.READ_I_2)) { break; } goto case 5000; case 1300: //RS232Cチェック if (await TEST_通信.CheckRS232C()) { break; } goto case 5000; case 1301: //RS485-1チェック if (await TEST_通信.CheckRS485_1()) { break; } goto case 5000; case 1302: //RS485-2チェック if (await TEST_通信.CheckRS485_2()) { break; } goto case 5000; case 1303: //表示基板チェック if (await TEST_通信.CheckDISP()) { break; } goto case 5000; case 1400: //Vrefチェック if (await TEST_VREF.SetVref()) { break; } goto case 5000; case 1401: //Vrefチェック 再 if (await TEST_VREF.CheckVref()) { break; } goto case 5000; case 1500: //出力回路チェック デジタル出力 if (await TEST_出力回路.CheckOUTP()) { break; } goto case 5000; case 1600: //PWTMP_A 電流温度モニタ1 DV9 if (await TEST_出力回路.CheckPWTMP_A(TEST_出力回路.DV_CH.DV9)) { break; } goto case 5000; case 1601: //PWTMP_A 電流温度モニタ2 DV11 if (await TEST_出力回路.CheckPWTMP_A(TEST_出力回路.DV_CH.DV11)) { break; } goto case 5000; case 1700: //PWTMP_V 電圧温度モニタ1 DV10 if (await TEST_出力回路.CheckPWTMP_V(TEST_出力回路.DV_CH.DV10)) { break; } goto case 5000; case 1701: //PWTMP_V 電圧温度モニタ2 DV12 if (await TEST_出力回路.CheckPWTMP_V(TEST_出力回路.DV_CH.DV12)) { break; } goto case 5000; case 1800: //PWINV インバータ回転司令 DV13 if (await TEST_出力回路.CheckPWINV()) { break; } goto case 5000; case 1900: //PWIOUT 操作量 電流1 DV1 if (await TEST_出力回路.CheckPWIOUT(TEST_出力回路.DV_CH.DV1)) { break; } goto case 5000; case 1901: //PWIOUT 操作量 電流2 DV3 if (await TEST_出力回路.CheckPWIOUT(TEST_出力回路.DV_CH.DV3)) { break; } goto case 5000; case 1902: //PWIOUT 操作量 電流3 DV5 if (await TEST_出力回路.CheckPWIOUT(TEST_出力回路.DV_CH.DV5)) { break; } goto case 5000; case 1903: //PWIOUT 操作量 電流4 DV7 if (await TEST_出力回路.CheckPWIOUT(TEST_出力回路.DV_CH.DV7)) { break; } goto case 5000; case 2000: //PWVOUT 操作量 電圧1 DV2 if (await TEST_出力回路.CheckPWVOUT(TEST_出力回路.DV_CH.DV2)) { break; } goto case 5000; case 2001: //PWVOUT 操作量 電圧2 DV4 if (await TEST_出力回路.CheckPWVOUT(TEST_出力回路.DV_CH.DV4)) { break; } goto case 5000; case 2002: //PWVOUT 操作量 電圧3 DV6 if (await TEST_出力回路.CheckPWVOUT(TEST_出力回路.DV_CH.DV6)) { break; } goto case 5000; case 2003: //PWVOUT 操作量 電圧4 DV8 if (await TEST_出力回路.CheckPWVOUT(TEST_出力回路.DV_CH.DV8)) { break; } goto case 5000; case 2100: //PV1,2 調整 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; var mess = "①プレスを開けて、CN18とCN26にケーブルを接続してください\r\n②CN1とCN3にダイヤル抵抗器を接続してください"; var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV12, TEST_PT100.POINT.FIRST)) { goto case 5000; } if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV12, TEST_PT100.POINT.SECOND)) { goto case 5000; } if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV12, TEST_PT100.POINT.THIRD)) { goto case 5000; } if (!await TEST_PT100.ReadPt100(TEST_PT100.NAME_PV.PV1)) { goto case 5000; } if (!await TEST_PT100.ReadPt100(TEST_PT100.NAME_PV.PV2)) { goto case 5000; } if (!await TEST_PT100.Check60(TEST_PT100.MODE.PV12)) { goto case 5000; } break; case 2200: //PV3,4 調整 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; mess = "①プレスを開けて、CN18とCN26にケーブルを接続してください\r\n②CN5とCN7にダイヤル抵抗器を接続してください"; dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV34, TEST_PT100.POINT.FIRST)) { goto case 5000; } if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV34, TEST_PT100.POINT.SECOND)) { goto case 5000; } if (!await TEST_PT100.SetPT100(TEST_PT100.MODE.PV34, TEST_PT100.POINT.THIRD)) { goto case 5000; } if (!await TEST_PT100.ReadPt100(TEST_PT100.NAME_PV.PV3)) { goto case 5000; } if (!await TEST_PT100.ReadPt100(TEST_PT100.NAME_PV.PV4)) { goto case 5000; } if (!await TEST_PT100.Check60(TEST_PT100.MODE.PV34)) { goto case 5000; } break; case 2600: //Pt100センサー断線チェック Normal if (await TEST_PT100センサ断線.CheckNormal()) { break; } goto case 5000; case 2601: //Pt100センサー断線チェック A断線 if (await TEST_PT100センサ断線.Check断線(TEST_PT100センサ断線.MODE.A断線)) { break; } goto case 5000; case 2602: //Pt100センサー断線チェック B断線 if (await TEST_PT100センサ断線.Check断線(TEST_PT100センサ断線.MODE.B_1断線)) { break; } goto case 5000; case 2603: //Pt100センサー断線チェック B'断線 if (await TEST_PT100センサ断線.Check断線(TEST_PT100センサ断線.MODE.B_2断線)) { break; } goto case 5000; case 2700: //電流入力回路調整 I_1 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; dialog = new DialogPic("ケーブルを外して、プレスを閉じてください!!!", DialogPic.NAME.その他); dialog.ShowDialog(); if (!await TEST_電流入力回路.SetInputI(TEST_電流入力回路.NAME.I_1)) { goto case 5000; } if (!await TEST_電流入力回路.CheckInputI(TEST_電流入力回路.NAME.I_1)) { goto case 5000; } break; case 2701: //電流入力回路調整 I_2 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電流入力回路.SetInputI(TEST_電流入力回路.NAME.I_2)) { goto case 5000; } if (!await TEST_電流入力回路.CheckInputI(TEST_電流入力回路.NAME.I_2)) { goto case 5000; } break; case 2702: //電流入力回路調整 I_3 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電流入力回路.SetInputI(TEST_電流入力回路.NAME.I_3)) { goto case 5000; } if (!await TEST_電流入力回路.CheckInputI(TEST_電流入力回路.NAME.I_3)) { goto case 5000; } break; case 2703: //電流入力回路調整 I_4 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電流入力回路.SetInputI(TEST_電流入力回路.NAME.I_4)) { goto case 5000; } if (!await TEST_電流入力回路.CheckInputI(TEST_電流入力回路.NAME.I_4)) { goto case 5000; } break; case 2800: //電圧入力回路調整 V_1 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電圧入力回路.SetInputV(TEST_電圧入力回路.MODE.V_1)) { goto case 5000; } if (!await TEST_電圧入力回路.CheckInputV(TEST_電圧入力回路.MODE.V_1)) { goto case 5000; } break; case 2801: //電圧入力回路調整 V_2 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電圧入力回路.SetInputV(TEST_電圧入力回路.MODE.V_2)) { goto case 5000; } if (!await TEST_電圧入力回路.CheckInputV(TEST_電圧入力回路.MODE.V_2)) { goto case 5000; } break; case 2802: //電圧入力回路調整 V_3 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電圧入力回路.SetInputV(TEST_電圧入力回路.MODE.V_3)) { goto case 5000; } if (!await TEST_電圧入力回路.CheckInputV(TEST_電圧入力回路.MODE.V_3)) { goto case 5000; } break; case 2803: //電圧入力回路調整 V_4 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_電圧入力回路.SetInputV(TEST_電圧入力回路.MODE.V_4)) { goto case 5000; } if (!await TEST_電圧入力回路.CheckInputV(TEST_電圧入力回路.MODE.V_4)) { goto case 5000; } break; case 2900: //2線式液漏れセンサ回路 調整 Flags.AddDecision = false; State.VmTestStatus.TestLog += "\r\n"; if (!await TEST_2線式液漏れセンサ回路.SetLeak()) { goto case 5000; } if (!await TEST_2線式液漏れセンサ回路.CheckLeak()) { goto case 5000; } break; case 5000: //NGだっときの処理 if (Flags.AddDecision) { SetTestLog("---- FAIL\r\n"); } FailStepNo = d.s.Key; FailTitle = d.s.Value; Flags.Retry = true; WaveFormGenerator.SourceOff(); HIOKI7012.StopSource(); General.PowerSupply(false); General.ResetIo(); State.VmTestStatus.IsActiveRing = false; //リング表示してる可能性があるので念のため消す処理 if (Flags.ClickStopButton) { goto CHECK_RETRY; } if (RetryCnt++ != Constants.RetryCount) { //リトライ履歴リスト更新 State.RetryLogList.Add(FailStepNo.ToString() + "," + FailTitle + "," + System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); goto Retry; } CHECK_RETRY: General.PlaySoundLoop(General.soundAlarm); var YesNoResult = MessageBox.Show("この項目はNGですがリトライしますか?", "", MessageBoxButtons.YesNo); General.StopSound(); //何が選択されたか調べる if (YesNoResult == DialogResult.Yes) { RetryCnt = 0; Flags.ClickStopButton = false; RETRY_INIT: State.VmTestStatus.Message = "周辺機器を初期化しています。。。"; var reInit = await General.InitAll(); State.VmTestStatus.Message = Constants.MessWait; if (!reInit) { var YesNoResult2 = MessageBox.Show("周辺機器の初期化に失敗しました\r\nリトライしますか??", "", MessageBoxButtons.YesNo); if (YesNoResult2 == DialogResult.Yes) { goto RETRY_INIT; } goto FAIL; } goto Retry; } goto FAIL; //自動リトライ後の作業者への確認はしない } //↓↓各ステップが合格した時の処理です↓↓ if (Flags.AddDecision) { SetTestLog("---- PASS\r\n"); } State.VmTestStatus.IsActiveRing = false; //リトライステータスをリセットする RetryCnt = 0; Flags.Retry = false; await Task.Run(() => { var CurrentProgValue = State.VmTestStatus.進捗度; var NextProgValue = (int)(((d.i + 1) / (double)テスト項目最新.Count()) * 100); var 化量 = NextProgValue - CurrentProgValue; foreach (var p in Enumerable.Range(1, 化量)) { State.VmTestStatus.進捗度 = CurrentProgValue + p; if (State.VmTestStatus.CheckUnitTest == false) { Thread.Sleep(10); } } }); if (Flags.ClickStopButton) { goto FAIL; } } //↓↓すべての項目が合格した時の処理です↓↓ General.ResetIo(); WaveFormGenerator.SourceOff(); HIOKI7012.StopSource(); await Task.Delay(500); State.VmTestStatus.Message = Constants.MessRemove; State.VmTestStatus.StartButtonContent = Constants.確認; State.VmTestStatus.StartButtonEnable = false; //通しで試験した時は検査データを保存する if (State.VmTestStatus.CheckUnitTest != true) //null or False アプリ立ち上げ時はnullになっている! { if (!General.SaveTestData()) { FailStepNo = 5000; FailTitle = "検査データ保存"; goto FAIL_DATA_SAVE; } } FlagTestTime = false; State.VmTestStatus.Colorlabel判定 = Brushes.AntiqueWhite; State.VmTestStatus.Decision = Flags.MetalMode ? "WIN" : "PASS"; State.VmTestStatus.ColorDecision = effect判定表示PASS; ResetRing(); SetDecision(); SbPass(); //通しで試験が合格したときの処理です(検査データを保存して、シリアルナンバーをインクリメントする) if (State.VmTestStatus.CheckUnitTest != true) //null or False アプリ立ち上げ時はnullになっている! { //当日試験合格数をインクリメント ビューモデルはまだ更新しない State.Setting.TodayOkCount++; //これ重要!!! シリアルナンバーをインクリメントし、次の試験に備える ビューモデルはまだ更新しない State.NewSerial++; Flags.ShowLabelPage = true; General.PlaySound(General.soundPass); await Task.Delay(3900); State.VmTestStatus.StartButtonEnable = true; return; } else { State.VmTestStatus.Message = Constants.MessRemove; Flags.ShowLabelPage = false; State.VmTestStatus.StartButtonEnable = true; StopButtonBlinkOn(); await Task.Run(() => { while (true) { if (Flags.Click確認Button) { break; } Thread.Sleep(100); } }); StopButtonBlinkOff(); return; } //不合格時の処理 FAIL: General.ResetIo(); await Task.Delay(500); FAIL_DATA_SAVE: FlagTestTime = false; State.VmTestStatus.Message = Constants.MessRemove; State.VmTestStatus.StartButtonContent = Constants.確認; State.VmTestStatus.StartButtonEnable = true; //当日試験不合格数をインクリメント ビューモデルはまだ更新しない State.Setting.TodayNgCount++; await Task.Delay(100); State.VmTestStatus.Colorlabel判定 = Brushes.AliceBlue; State.VmTestStatus.Decision = "FAIL"; State.VmTestStatus.ColorDecision = effect判定表示FAIL; SetErrorMessage(FailStepNo, FailTitle); var NgDataList = new List <string>() { State.VmMainWindow.Opecode, State.VmMainWindow.Operator, System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), State.VmTestStatus.FailInfo, State.VmTestStatus.Spec, State.VmTestStatus.MeasValue }; General.SaveNgData(NgDataList); ResetRing(); SetDecision(); SetErrInfo(); SbFail(); General.PlaySound(General.soundFail); StopButtonBlinkOn(); await Task.Run(() => { while (true) { if (Flags.Click確認Button) { break; } Thread.Sleep(100); } }); StopButtonBlinkOff(); return; } catch { System.Windows.Forms.MessageBox.Show("想定外の例外発生DEATH!!!\r\n申し訳ありませんが再起動してください"); Environment.Exit(0); } finally { General.ResetIo(); SbRingLoad(); if (Flags.ShowLabelPage) { State.uriOtherInfoPage = new Uri("Page/Test/ラベル貼り付け.xaml", UriKind.Relative); State.VmMainWindow.TabIndex = 3; } else { General.ResetViewModel(); RefreshDataContext(); } } }
const int numSamples = 3;//サンプリング数はここで変更する //※奇数で指定すること(中央値を計測結果として表示するため) public static async Task <bool> CheckFLW(MODE mode) { bool result1 = false; bool result2 = false; bool result3 = false; bool result1下限 = false; bool result1上限 = false; bool result2下限 = false; bool result2上限 = false; bool result3下限 = false; bool result3上限 = false; string Data1 = ""; string Data2 = ""; string Data3 = ""; var List_Data1 = new List <double>(); var List_Data2 = new List <double>(); var List_Data3 = new List <double>(); //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ bool GetData() { try { Target.SendData("FLW"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(false); } if (General.CountNewline() == numSamples + 2) { break; } } Target.Escape(); Sleep(1500); int 検索開始位置 = 0; foreach (var i in Enumerable.Range(0, numSamples)) { var log = State.VmComm.RX; int FoundIndex = log.IndexOf("FLW,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); List_Data1.Add(Double.Parse(dataList[1])); List_Data2.Add(Double.Parse(dataList[2])); List_Data3.Add(Double.Parse(dataList[3])); 検索開始位置 = FoundIndex + 1; } return(true); } catch { return(false); } }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var mess = ""; switch (mode) { case MODE.LEFT: mess = "チェッカーのパルス入力VRを左いっぱいに回してください"; break; case MODE.MIDDLE: mess = "チェッカーのパルス入力VRを真ん中にしてください"; break; case MODE.RIGHT: mess = "チェッカーのパルス入力VRを右いっぱいに回してください"; break; } var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } if (!GetData()) { return false; } double Min = 0; double Max = 0; switch (mode)//規格範囲の決定 { case MODE.LEFT: Min = State.TestSpec.Pulse_L_Min; Max = State.TestSpec.Pulse_L_Max; break; case MODE.MIDDLE: Min = State.TestSpec.Pulse_M_Min; Max = State.TestSpec.Pulse_M_Max; break; case MODE.RIGHT: Min = State.TestSpec.Pulse_R_Min; Max = State.TestSpec.Pulse_R_Max; break; } result1下限 = List_Data1.All(data => data >= Min); result1上限 = List_Data1.All(data => data <= Max); result1 = result1下限 && result1上限; result2下限 = List_Data2.All(data => data >= Min); result2上限 = List_Data2.All(data => data <= Max); result2 = result2下限 && result2上限; result3下限 = List_Data3.All(data => data >= Min); result3上限 = List_Data3.All(data => data <= Max); result3 = result3下限 && result3上限; List_Data1.Sort(); if (result1) { Data1 = List_Data1[numSamples / 2].ToString("F1");//中央値 } else { if (!result1下限) { Data1 = List_Data1[0].ToString("F1");//Min } else { Data1 = List_Data1[numSamples - 1].ToString("F1");//Max } } List_Data2.Sort(); if (result2) { Data2 = List_Data2[numSamples / 2].ToString("F1");//中央値 } else { if (!result2下限) { Data2 = List_Data2[0].ToString("F1");//Min } else { Data2 = List_Data2[numSamples - 1].ToString("F1");//Max } } List_Data3.Sort(); if (result3) { Data3 = List_Data3[numSamples / 2].ToString("F1");//中央値 } else { if (!result3下限) { Data3 = List_Data3[0].ToString("F1");//Min } else { Data3 = List_Data3[numSamples - 1].ToString("F1");//Max } } return result1 && result2 && result3; })); } catch { return(false); } finally { General.PowerSupply(false); //ビューモデルの更新 switch (mode) { case MODE.LEFT: State.VmTestResults.Pulse1L = Data1; State.VmTestResults.Pulse2L = Data2; State.VmTestResults.Pulse3L = Data3; State.VmTestResults.ColPulse1L = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPulse2L = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPulse3L = result3 ? OffBrush : NgBrush; break; case MODE.MIDDLE: State.VmTestResults.Pulse1M = Data1; State.VmTestResults.Pulse2M = Data2; State.VmTestResults.Pulse3M = Data3; State.VmTestResults.ColPulse1M = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPulse2M = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPulse3M = result3 ? OffBrush : NgBrush; break; case MODE.RIGHT: State.VmTestResults.Pulse1R = Data1; State.VmTestResults.Pulse2R = Data2; State.VmTestResults.Pulse3R = Data3; State.VmTestResults.ColPulse1R = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPulse2R = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPulse3R = result3 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckAN_P(MODE mode) { bool result = false; bool result上限 = false; bool result下限 = false; string Data = ""; const int numSamples = 10; int offset = 0; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ List <double> GetData() { General.ClearCommlog(); Target.SendData("ANB_P"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == numSamples + 2) { break; } } Target.Escape(); Sleep(1500); int 検索開始位置 = 0; var List = new List <double>(); foreach (var i in Enumerable.Range(0, numSamples)) { var log = State.VmComm.RX; int FoundIndex = log.IndexOf("ANB_P,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); List.Add(Double.Parse(dataList[offset])); 検索開始位置 = FoundIndex + 1; } return(List); }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var mess = ""; switch (mode) { case MODE.READ_V: mess = "①FGと50/60Hz入力を接続する\r\n②チェッカーの50/60Hz切替を上向きにする"; break; case MODE.READ_I_1: mess = "①チェッカーのカレントトランス1,2入力切替を上向きにする\r\n②FGをカレントトランス外部入力<1>に接続する"; break; case MODE.READ_I_2: mess = "①チェッカーのカレントトランス1,2入力切替を上向きにする\r\n②FGをカレントトランス外部入力<2>に接続する"; break; } var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Sleep(1200); switch (mode) { case MODE.READ_V: offset = 3; // マルチメータで出力値を計測しながらFGを調整する General.Set3229Meas(General.MEAS3229_CH.CN11_1); //マルチメータ切り替え処理を記述 if (!SetFG_6_5Vrms()) { return false; } break; case MODE.READ_I_1: offset = 4; // FG出力値は固 if (!SetFG_5_7Vrms()) { return false; } break; case MODE.READ_I_2: offset = 5; // FG出力値は固定 if (!SetFG_5_7Vrms()) { return false; } break; } Sleep(500); var ListData_ = GetData(); if (ListData_ == null) { return false; } //安定後のデータを取得する //最後から5ヶのデータをサンプリング値として取得する(前半は値が安定していない可能性があるため) //5個飛ばして5個を抽出(インデックスが5から10) var ListData = ListData_.Skip(5).Take(5).ToList <double>(); switch (mode) { case MODE.READ_V: result下限 = ListData.All(data => data >= State.TestSpec.電圧換算値_Min); result上限 = ListData.All(data => data <= State.TestSpec.電圧換算値_Max); result = result下限 && result上限; break; case MODE.READ_I_1: case MODE.READ_I_2: ListData.Sort(); result下限 = ListData[2] >= State.TestSpec.電流換算値_Min; //中央値で判定 result上限 = ListData[2] <= State.TestSpec.電流換算値_Max; //中央値で判定 //result下限 = ListData.All(data => data >= State.testSpec.電流換算値_Min);//初期の頃の判定方法 //result上限 = ListData.All(data => data <= State.testSpec.電流換算値_Max);//初期の頃の判定方法 result = result下限 && result上限; break; } ListData.Sort(); if (result) { Data = ListData[2].ToString("F1");//中央値 } else { if (!result下限) { Data = ListData[0].ToString("F1");//Min } else { Data = ListData[4].ToString("F1");//Max } } return result; })); } catch { return(false); } finally { WaveFormGenerator.SourceOff(); General.PowerSupply(false); //ビューモデルの更新 switch (mode) { case MODE.READ_V: State.VmTestResults.VolConverted = Data + "Vrms"; State.VmTestResults.ColVolConverted = result ? OffBrush : NgBrush; break; case MODE.READ_I_1: State.VmTestResults.CT1 = Data + "Arms"; State.VmTestResults.ColCT1 = result ? OffBrush : NgBrush; break; case MODE.READ_I_2: State.VmTestResults.CT2 = Data + "Arms"; State.VmTestResults.ColCT2 = result ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckPWTMP_A(DV_CH ch) { bool result0 = false; bool result150 = false; bool result300 = false; string Data0 = ""; string Data150 = ""; string Data300 = ""; try { return(await Task <bool> .Run(() => { switch (ch) { case DV_CH.DV9: General.Set7012Meas(General.MEAS_CH.DV9); break; case DV_CH.DV11: General.Set7012Meas(General.MEAS_CH.DV11); break; } //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("PWTMP_A 0 0"); Sleep(2500); HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData * 10; Target.SendData("PWTMP_A 150 150"); Sleep(2500); HIOKI7012.MeasureDcV(); var Meas150 = HIOKI7012.VoltData * 10; Target.SendData("PWTMP_A 300 300"); Sleep(2500); HIOKI7012.MeasureDcV(); var Meas300 = HIOKI7012.VoltData * 10; result0 = (State.TestSpec.Temp_A_0_Min <= Meas0 && Meas0 <= State.TestSpec.Temp_A_0_Max); result150 = (State.TestSpec.Temp_A_150_Min <= Meas150 && Meas150 <= State.TestSpec.Temp_A_150_Max); result300 = (State.TestSpec.Temp_A_300_Min <= Meas300 && Meas300 <= State.TestSpec.Temp_A_300_Max); Data0 = Meas0.ToString("F2") + "mA"; Data150 = Meas150.ToString("F2") + "mA"; Data300 = Meas300.ToString("F2") + "mA"; return result0 && result150 && result300; })); } catch { return(false); } finally { General.PowerSupply(false); switch (ch) { case DV_CH.DV9: State.VmTestResults.DV9_0 = Data0; State.VmTestResults.DV9_150 = Data150; State.VmTestResults.DV9_300 = Data300; State.VmTestResults.ColDV9_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV9_150 = result150 ? OffBrush : NgBrush; State.VmTestResults.ColDV9_300 = result300 ? OffBrush : NgBrush; break; case DV_CH.DV11: State.VmTestResults.DV11_0 = Data0; State.VmTestResults.DV11_150 = Data150; State.VmTestResults.DV11_300 = Data300; State.VmTestResults.ColDV11_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV11_150 = result150 ? OffBrush : NgBrush; State.VmTestResults.ColDV11_300 = result300 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> SetLeak() { bool result調整点 = false; string Data調整点 = ""; string Data調整点再 = ""; State.VmTestStatus.TestLog += " 80kΩ調整"; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ string GetData() { Target.SendData("LS11"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf("LS11,"); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(dataList[2].Substring(1));//一文字目がスペースなので削除 }; string GetData再() { Target.SendData("LSR"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf("LSR,"); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(dataList[1].Substring(1)); //一文字目がスペースなので削除 }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var mess = "①チェッカーの終端抵抗切替 内部/外部スイッチを上向きにする\r\n" + "②チェッカーの漏液センサ(2線)端子とデジタル抵抗器を接続する\r\n" + "③デジタル抵抗器を80kΩに設定する"; var dialog = new DialogPic(mess, DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Data調整点 = GetData(); if (Data調整点 == null) { return false; } Sleep(500); General.PowerSupply(false); Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Data調整点再 = GetData再(); if (Data調整点再 == null) { return false; } result調整点 = Data調整点 == Data調整点再; return result調整点; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result調整点? "---PASS\r\n" :"---FAIL\r\n"; General.PowerSupply(false); State.VmTestResults.Res80k = Data調整点 + "h"; State.VmTestResults.Res80kRE = Data調整点再 + "h"; State.VmTestResults.ColRes80k = result調整点 ? OffBrush : NgBrush; State.VmTestResults.ColRes80kRE = result調整点 ? OffBrush : NgBrush; } }
public static async Task <bool> CheckPWINV() { bool result0 = false; bool result1800 = false; bool result3600 = false; string Data0 = ""; string Data1800 = ""; string Data3600 = ""; try { return(await Task <bool> .Run(() => { General.Set7012Meas(General.MEAS_CH.DV13); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } Target.SendData("PWINV 0"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData; Target.SendData("PWINV 1800"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas1800 = HIOKI7012.VoltData; Target.SendData("PWINV 3600"); Sleep(1500); HIOKI7012.MeasureDcV(); var Meas3600 = HIOKI7012.VoltData; result0 = (State.TestSpec.Inv_0_Min <= Meas0 && Meas0 <= State.TestSpec.Inv_0_Max); result1800 = (State.TestSpec.Inv_1800_Min <= Meas1800 && Meas1800 <= State.TestSpec.Inv_1800_Max); result3600 = (State.TestSpec.Inv_3600_Min <= Meas3600 && Meas3600 <= State.TestSpec.Inv_3600_Max); Data0 = Meas0.ToString("F2") + "V"; Data1800 = Meas1800.ToString("F2") + "V"; Data3600 = Meas3600.ToString("F2") + "V"; return result0 && result1800 && result3600; })); } catch { return(false); } finally { General.PowerSupply(false); State.VmTestResults.DV13_0 = Data0; State.VmTestResults.DV13_1800 = Data1800; State.VmTestResults.DV13_3600 = Data3600; State.VmTestResults.ColDV13_0 = result0 ? OffBrush : NgBrush; State.VmTestResults.ColDV13_1800 = result1800 ? OffBrush : NgBrush; State.VmTestResults.ColDV13_3600 = result3600 ? OffBrush : NgBrush; } }
public static async Task <bool> Check60(MODE mode) { bool result1 = false; bool result1_temp下限 = false; bool result1_temp上限 = false; bool result2 = false; bool result2_temp下限 = false; bool result2_temp上限 = false; string Data1_temp = ""; string Data2_temp = ""; const int SampleCnt = 3; var List1 = new List <double>(); var List2 = new List <double>(); State.VmTestStatus.TestLog += $" {mode.ToString()} 60℃確認"; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ void GetData() { Target.SendData("TEMP"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return; } if (General.CountNewline() == SampleCnt + 2) { break; } } Target.Escape(); int offset1; int offset2; if (mode == MODE.PV12) { offset1 = 1; offset2 = 2; } else { offset1 = 3; offset2 = 4; } var log = VmComm.RX; int 検索開始位置 = 0; foreach (var i in Enumerable.Range(0, SampleCnt)) { int FoundIndex = log.IndexOf("TEMP,", 検索開始位置); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); List1.Add(Double.Parse(dataList[offset1])); List2.Add(Double.Parse(dataList[offset2])); 検索開始位置 = FoundIndex + 1; } }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { await Task.Delay(500); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return(false); } General.PlaySound(General.sound123_24); var dialog = new DialogPic("ダイヤル抵抗器を123.24オームに設定してください", DialogPic.NAME.その他, soundSw: false); dialog.ShowDialog(); await Task.Delay(1500); GetData(); General.PowerSupply(false); result1_temp下限 = List1.All(data => data >= State.TestSpec.Temp60_Min); result1_temp上限 = List1.All(data => data <= State.TestSpec.Temp60_Max); result1 = result1_temp下限 && result1_temp上限; result2_temp下限 = List2.All(data => data >= State.TestSpec.Temp60_Min); result2_temp上限 = List2.All(data => data <= State.TestSpec.Temp60_Max); result2 = result2_temp下限 && result2_temp上限; List1.Sort(); if (result1) { Data1_temp = List1[SampleCnt / 2].ToString("F2") + "℃";//中央値 } else { if (!result1_temp下限) { Data1_temp = List1[0].ToString("F2") + "℃";//Min } else { Data1_temp = List1[SampleCnt - 1].ToString("F2") + "℃";//Max } } List2.Sort(); if (result2) { Data2_temp = List2[SampleCnt / 2].ToString("F2") + "℃";//中央値 } else { if (!result2_temp下限) { Data2_temp = List2[0].ToString("F2") + "℃";//Min } else { Data2_temp = List2[SampleCnt - 1].ToString("F2") + "℃";//Max } } return(result1 && result2); } catch { return(false); } finally { State.VmTestStatus.TestLog += result1 && result2? "---PASS\r\n" :"---FAIL\r\n"; General.PowerSupply(false); if (mode == MODE.PV12) { VmTestResults.PV1_123_24 = Data1_temp; VmTestResults.PV2_123_24 = Data2_temp; VmTestResults.ColPV1_123_24 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV2_123_24 = result2 ? OffBrush : NgBrush; } else { VmTestResults.PV3_123_24 = Data1_temp; VmTestResults.PV4_123_24 = Data2_temp; VmTestResults.ColPV3_123_24 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV4_123_24 = result2 ? OffBrush : NgBrush; } } }
public static async Task <bool> CheckOUTP() { try { var re = await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); return(General.CheckDemo表示()); }); if (!re) { return(false); } Target.SendData("OUTP_ON"); var dialog = new Dialog出力回路(MODE.OUTP_ON); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } Target.SendData("OUTP_OFF"); dialog = new Dialog出力回路(MODE.OUTP_OFF1); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } await Task.Delay(1000); dialog = new Dialog出力回路(MODE.OUTP_OFF2); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } General.PowerSupply(false); await Task.Delay(500); General.PowerSupply(true); dialog = new Dialog出力回路(MODE.INTERLOCK1); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } dialog = new Dialog出力回路(MODE.INTERLOCK2); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } dialog = new Dialog出力回路(MODE.INTERLOCK3); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } var dialog2 = new DialogPic("チェッカーの外部非常停止SWを下向きにしてください", DialogPic.NAME.その他); dialog2.ShowDialog(); return(true); } catch { return(false); } finally { General.PowerSupply(false); } }
public static async Task <bool> SetInputV(MODE mode) { bool FlagTimeout = false; System.Timers.Timer Tm; //タイマー(ウィンドウハンドル取得用)の設定 Tm = new System.Timers.Timer(); Tm.Enabled = false; Tm.Interval = 10000; Tm.Elapsed += (o, e) => { Tm.Stop(); FlagTimeout = true; }; bool result第一調整点 = false; bool result第二調整点 = false; string Data第一調整点 = ""; string Data第二調整点 = ""; string Data第一調整点再 = ""; string Data第二調整点再 = ""; State.VmTestStatus.TestLog += $" {mode.ToString()} 調整"; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ string GetData(string command) { General.ClearCommlog(); Target.SendData(command); Tm.Stop(); FlagTimeout = false; Tm.Start(); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (FlagTimeout || Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf(command + ","); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(dataList[2].Substring(1));//一文字目がスペースなので削除 }; List <string> GetData再(string command) { General.ClearCommlog(); Target.SendData(command); Tm.Stop(); FlagTimeout = false; Tm.Start(); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (FlagTimeout || Flags.ClickStopButton) { return(null); } if (General.CountNewline() == 2) { break; } } Target.Escape(); Sleep(1000); var log = State.VmComm.RX; int FoundIndex = log.IndexOf(command + ","); int 改行位置 = log.IndexOf("\r\n", FoundIndex); var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex); var dataList = 取り出し1行.Split(','); return(new List <string>() { dataList[1].Substring(1), dataList[2].Substring(1) }); //一文字目がスペースなので削除 }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { return(await Task <bool> .Run(() => { string command = ""; switch (mode) { case MODE.V_1: //メッセージボックス表示("CN2にシグナルソース(電圧端子)を接続してください"); General.Set7012Source(General.SOURCE_CH.V1); command = "V1"; break; case MODE.V_2: //メッセージボックス表示("CN4にシグナルソース(電圧端子)を接続してください"); General.Set7012Source(General.SOURCE_CH.V2); command = "V2"; break; case MODE.V_3: //メッセージボックス表示("CN6にシグナルソース(電圧端子)を接続してください"); General.Set7012Source(General.SOURCE_CH.V3); command = "V3"; break; case MODE.V_4: //メッセージボックス表示("CN8にシグナルソース(電圧端子)を接続してください"); General.Set7012Source(General.SOURCE_CH.V4); command = "V4"; break; } Sleep(500); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } HIOKI7012.OutDcV(0.500); Sleep(2000); Data第一調整点 = GetData(command + "1"); if (Data第一調整点 == null) { return false; } Sleep(500); HIOKI7012.OutDcV(10.000); Sleep(2000); Data第二調整点 = GetData(command + "2"); if (Data第二調整点 == null) { return false; } Sleep(500); General.PowerSupply(false); Sleep(1000); //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } var ListData再 = GetData再("@" + command + "*"); if (ListData再 == null) { return false; } Data第一調整点再 = ListData再[0]; Data第二調整点再 = ListData再[1]; result第一調整点 = Data第一調整点 == Data第一調整点再; result第二調整点 = Data第二調整点 == Data第二調整点再; return result第一調整点 && result第二調整点; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result第一調整点 && result第二調整点 ? "---PASS\r\n" : "---FAIL\r\n"; HIOKI7012.StopSource(); General.PowerSupply(false); switch (mode) { case MODE.V_1: State.VmTestResults.V1_1 = Data第一調整点 + "h"; State.VmTestResults.V1_2 = Data第二調整点 + "h"; State.VmTestResults.V1_1RE = Data第一調整点再 + "h"; State.VmTestResults.V1_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColV1_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV1_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV1_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV1_2RE = result第二調整点 ? OffBrush : NgBrush; break; case MODE.V_2: State.VmTestResults.V2_1 = Data第一調整点 + "h"; State.VmTestResults.V2_2 = Data第二調整点 + "h"; State.VmTestResults.V2_1RE = Data第一調整点再 + "h"; State.VmTestResults.V2_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColV2_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV2_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV2_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV2_2RE = result第二調整点 ? OffBrush : NgBrush; break; case MODE.V_3: State.VmTestResults.V3_1 = Data第一調整点 + "h"; State.VmTestResults.V3_2 = Data第二調整点 + "h"; State.VmTestResults.V3_1RE = Data第一調整点再 + "h"; State.VmTestResults.V3_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColV3_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV3_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV3_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV3_2RE = result第二調整点 ? OffBrush : NgBrush; break; case MODE.V_4: State.VmTestResults.V4_1 = Data第一調整点 + "h"; State.VmTestResults.V4_2 = Data第二調整点 + "h"; State.VmTestResults.V4_1RE = Data第一調整点再 + "h"; State.VmTestResults.V4_2RE = Data第二調整点再 + "h"; State.VmTestResults.ColV4_1 = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV4_2 = result第二調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV4_1RE = result第一調整点 ? OffBrush : NgBrush; State.VmTestResults.ColV4_2RE = result第二調整点 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckDisconnection() { var dialog = new DialogPic("6ダイヤル抵抗器を150オームくらいに設定してね\r\n少数点以下は適当でOKだよ", DialogPic.NAME.その他); dialog.ShowDialog(); General.PowerSupply(true); dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } await Task.Delay(1500); General.SetCn10to6ダイヤル抵抗Bのみ(); dialog = new DialogPic("チェッカーの温度警報LEDが点灯しましたか??", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } General.SetCn10to6ダイヤル抵抗(); General.PowerSupply(false); await Task.Delay(1500); General.PowerSupply(true); dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } await Task.Delay(1500); General.SetCn10to6ダイヤル抵抗Aのみ(); dialog = new DialogPic("チェッカーの温度警報LEDが点灯しましたか??", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } General.SetCn10to6ダイヤル抵抗(); General.PowerSupply(false); await Task.Delay(1500); General.PowerSupply(true); dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } General.PowerSupply(false); //General.SetCn10toChecker(); General.SetCn10to6ダイヤル抵抗(); //MessageBox.Show("①製品のCN10に専用抵抗器(123.24Ω)を接続してください"); return(true); }
public static async Task <bool> CheckANA2_P(MODE mode) { List <bool> ListResult = new List <bool>(); List <string> ListData = new List <string>(); const int numSamples = 5;//サンプリング数はここで変更する bool resultAna12 = false; bool resultAna13 = false; bool resultAna14 = false; bool resultAna15 = false; bool resultAna17 = false; bool resultAna23 = false; bool resultAna24 = false; bool resultAna25 = false; bool resultAna26 = false; bool resultAna27 = false; string Ana12Data = ""; string Ana13Data = ""; string Ana14Data = ""; string Ana15Data = ""; string Ana17Data = ""; string Ana23Data = ""; string Ana24Data = ""; string Ana25Data = ""; string Ana26Data = ""; string Ana27Data = ""; var List_ANA12 = new List <double>(); var List_ANA13 = new List <double>(); var List_ANA14 = new List <double>(); var List_ANA15 = new List <double>(); var List_ANA17 = new List <double>(); var List_ANA23 = new List <double>(); var List_ANA24 = new List <double>(); var List_ANA25 = new List <double>(); var List_ANA26 = new List <double>(); var List_ANA27 = new List <double>(); try { var dialog = new DialogPic(mode == MODE.OFF ? "①青枠のスイッチをすべてOFF(↓)する\r\n②製品SW1の1-5をOFF(↓)する\r\n③表示基板のSW11の2番をOFF(↓)する" : "①青枠のスイッチをすべてON(↑)する\r\n②製品SW1の1-5をON(↑)する\r\n③表示基板のSW11の2番をON(↑)する", DialogPic.NAME.その他); dialog.ShowDialog(); if (!Flags.DialogReturn) { return(false); } return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); //デモ画面確認 if (!General.CheckDemo表示()) { return false; } Target.SendData("ANA2_P"); while (true)//取り込んだ通信データが7行以上になるまで待つ { if (Flags.ClickStopButton) { return false; } if (General.CountNewline() > numSamples + 2) { break; } } Target.Escape(); int 検索開始位置 = 0; foreach (var i in Enumerable.Range(0, numSamples)) { var log = VmComm.RX; int FoundIndex = log.IndexOf("ANA2_P,", 検索開始位置); List_ANA12.Add(Double.Parse(log.Substring(FoundIndex + 8, 5))); List_ANA13.Add(Double.Parse(log.Substring(FoundIndex + 15, 5))); List_ANA14.Add(Double.Parse(log.Substring(FoundIndex + 22, 5))); List_ANA15.Add(Double.Parse(log.Substring(FoundIndex + 29, 5))); List_ANA17.Add(Double.Parse(log.Substring(FoundIndex + 43, 5))); List_ANA23.Add(Double.Parse(log.Substring(FoundIndex + 50, 5))); List_ANA24.Add(Double.Parse(log.Substring(FoundIndex + 57, 5))); List_ANA25.Add(Double.Parse(log.Substring(FoundIndex + 64, 5))); List_ANA26.Add(Double.Parse(log.Substring(FoundIndex + 71, 5))); List_ANA27.Add(Double.Parse(log.Substring(FoundIndex + 78, 5))); 検索開始位置 = FoundIndex + 1; } if (mode == MODE.OFF) { resultAna12 = List_ANA12.Max() <= State.TestSpec.Ana12_15_1; resultAna13 = List_ANA13.Max() <= State.TestSpec.Ana12_15_1; resultAna14 = List_ANA14.Max() <= State.TestSpec.Ana12_15_1; resultAna15 = List_ANA15.Max() <= State.TestSpec.Ana12_15_1; resultAna17 = List_ANA17.Min() >= State.TestSpec.Ana17_27_1; resultAna23 = List_ANA23.Min() >= State.TestSpec.Ana17_27_1; resultAna24 = List_ANA24.Min() >= State.TestSpec.Ana17_27_1; resultAna25 = List_ANA25.Min() >= State.TestSpec.Ana17_27_1; resultAna26 = List_ANA26.Min() >= State.TestSpec.Ana17_27_1; resultAna27 = List_ANA27.Min() >= State.TestSpec.Ana17_27_1; Ana12Data = List_ANA12.Max().ToString("F3"); Ana13Data = List_ANA13.Max().ToString("F3"); Ana14Data = List_ANA14.Max().ToString("F3"); Ana15Data = List_ANA15.Max().ToString("F3"); Ana17Data = List_ANA17.Min().ToString("F3"); Ana23Data = List_ANA23.Min().ToString("F3"); Ana24Data = List_ANA24.Min().ToString("F3"); Ana25Data = List_ANA25.Min().ToString("F3"); Ana26Data = List_ANA26.Min().ToString("F3"); Ana27Data = List_ANA27.Min().ToString("F3"); } else { resultAna12 = List_ANA12.Min() >= State.TestSpec.Ana12_15_2; resultAna13 = List_ANA13.Min() >= State.TestSpec.Ana12_15_2; resultAna14 = List_ANA14.Min() >= State.TestSpec.Ana12_15_2; resultAna15 = List_ANA15.Min() >= State.TestSpec.Ana12_15_2; resultAna17 = List_ANA17.Max() <= State.TestSpec.Ana17_27_2; resultAna23 = List_ANA23.Max() <= State.TestSpec.Ana17_27_2; resultAna24 = List_ANA24.Max() <= State.TestSpec.Ana17_27_2; resultAna25 = List_ANA25.Max() <= State.TestSpec.Ana17_27_2; resultAna26 = List_ANA26.Max() <= State.TestSpec.Ana17_27_2; resultAna27 = List_ANA27.Max() <= State.TestSpec.Ana17_27_2; Ana12Data = List_ANA12.Min().ToString("F3"); Ana13Data = List_ANA13.Min().ToString("F3"); Ana14Data = List_ANA14.Min().ToString("F3"); Ana15Data = List_ANA15.Min().ToString("F3"); Ana17Data = List_ANA17.Max().ToString("F3"); Ana23Data = List_ANA23.Max().ToString("F3"); Ana24Data = List_ANA24.Max().ToString("F3"); Ana25Data = List_ANA25.Max().ToString("F3"); Ana26Data = List_ANA26.Max().ToString("F3"); Ana27Data = List_ANA27.Max().ToString("F3"); } return resultAna12 && resultAna13 && resultAna14 && resultAna15 && resultAna17 && resultAna23 && resultAna24 && resultAna25 && resultAna26 && resultAna27; })); } catch { return(false); } finally { // if (mode == MODE.OFF) { VmTestResults.ANA12_1 = Ana12Data; VmTestResults.ANA13_1 = Ana13Data; VmTestResults.ANA14_1 = Ana14Data; VmTestResults.ANA15_1 = Ana15Data; VmTestResults.ANA17_1 = Ana17Data; VmTestResults.ANA23_1 = Ana23Data; VmTestResults.ANA24_1 = Ana24Data; VmTestResults.ANA25_1 = Ana25Data; VmTestResults.ANA26_1 = Ana26Data; VmTestResults.ANA27_1 = Ana27Data; VmTestResults.ColANA12_1 = resultAna12 ? OffBrush : NgBrush; VmTestResults.ColANA13_1 = resultAna13 ? OffBrush : NgBrush; VmTestResults.ColANA14_1 = resultAna14 ? OffBrush : NgBrush; VmTestResults.ColANA15_1 = resultAna15 ? OffBrush : NgBrush; VmTestResults.ColANA17_1 = resultAna17 ? OffBrush : NgBrush; VmTestResults.ColANA23_1 = resultAna23 ? OffBrush : NgBrush; VmTestResults.ColANA24_1 = resultAna24 ? OffBrush : NgBrush; VmTestResults.ColANA25_1 = resultAna25 ? OffBrush : NgBrush; VmTestResults.ColANA26_1 = resultAna26 ? OffBrush : NgBrush; VmTestResults.ColANA27_1 = resultAna27 ? OffBrush : NgBrush; } else { VmTestResults.ANA12_2 = Ana12Data; VmTestResults.ANA13_2 = Ana13Data; VmTestResults.ANA14_2 = Ana14Data; VmTestResults.ANA15_2 = Ana15Data; VmTestResults.ANA17_2 = Ana17Data; VmTestResults.ANA23_2 = Ana23Data; VmTestResults.ANA24_2 = Ana24Data; VmTestResults.ANA25_2 = Ana25Data; VmTestResults.ANA26_2 = Ana26Data; VmTestResults.ANA27_2 = Ana27Data; VmTestResults.ColANA12_2 = resultAna12 ? OffBrush : NgBrush; VmTestResults.ColANA13_2 = resultAna13 ? OffBrush : NgBrush; VmTestResults.ColANA14_2 = resultAna14 ? OffBrush : NgBrush; VmTestResults.ColANA15_2 = resultAna15 ? OffBrush : NgBrush; VmTestResults.ColANA17_2 = resultAna17 ? OffBrush : NgBrush; VmTestResults.ColANA23_2 = resultAna23 ? OffBrush : NgBrush; VmTestResults.ColANA24_2 = resultAna24 ? OffBrush : NgBrush; VmTestResults.ColANA25_2 = resultAna25 ? OffBrush : NgBrush; VmTestResults.ColANA26_2 = resultAna26 ? OffBrush : NgBrush; VmTestResults.ColANA27_2 = resultAna27 ? OffBrush : NgBrush; } General.PowerSupply(false); if (mode == MODE.ON) { var dialog = new DialogPic("①青枠のスイッチをすべてOFF(↓)する\r\n②製品SW1の1-5をOFF(↓)する\r\n③表示基板のSW11の2番をOFF(↓)する", DialogPic.NAME.その他); dialog.ShowDialog(); await Task.Delay(300); } } }