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> 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> 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> 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> 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 <bool> SetPT100(MODE mode, POINT point) { var result1 = false; var result2 = false; var strData1 = ""; var strData2 = ""; var mess = ""; var max = 0.0; var min = 0.0; var cmd1 = ""; var cmd2 = ""; State.VmTestStatus.TestLog += $" {mode.ToString()} {point.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));//一文字目がスペースなので削除 }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { await Task.Delay(500); if (!await CheckComm()) { return(false); } switch (point) { case POINT.FIRST: max = State.TestSpec.PV第一Max; min = State.TestSpec.PV第一Min; mess = "ダイヤル抵抗器を108.96オームに設定してください"; cmd1 = mode == MODE.PV12 ? "PV11" : "PV31"; cmd2 = mode == MODE.PV12 ? "PV21" : "PV41"; General.PlaySound(General.sound108_96); break; case POINT.SECOND: max = State.TestSpec.PV第二Max; min = State.TestSpec.PV第二Min; mess = "ダイヤル抵抗器を149.83オームに設定してください"; cmd1 = mode == MODE.PV12 ? "PV12" : "PV32"; cmd2 = mode == MODE.PV12 ? "PV22" : "PV42"; General.PlaySound(General.sound149_83); break; case POINT.THIRD: max = State.TestSpec.PV第三Max; min = State.TestSpec.PV第三Min; mess = "ダイヤル抵抗器を183.19オームに設定してください"; cmd1 = mode == MODE.PV12 ? "PV13" : "PV33"; cmd2 = mode == MODE.PV12 ? "PV23" : "PV43"; General.PlaySound(General.sound183_19); break; } var dialog = new DialogPic(mess, DialogPic.NAME.その他, soundSw: false); dialog.ShowDialog(); await Task.Delay(4000); await Task.Run(() => { strData1 = GetData(cmd1); strData2 = GetData(cmd2); }); if (strData1 == null || strData2 == null) { return(false); } //第一調整点の調整値が適正な範囲内にあるかチェック int Data1 = Convert.ToInt32(strData1, 16); int Data2 = Convert.ToInt32(strData2, 16); result1 = min < Data1 && Data1 < max; result2 = min < Data2 && Data2 < 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) { switch (point) { case POINT.FIRST: VmTestResults.PV1_1 = strData1 + "h"; VmTestResults.PV2_1 = strData2 + "h"; VmTestResults.ColPV1_1 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV2_1 = result2 ? OffBrush : NgBrush; break; case POINT.SECOND: VmTestResults.PV1_2 = strData1 + "h"; VmTestResults.PV2_2 = strData2 + "h"; VmTestResults.ColPV1_2 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV2_2 = result2 ? OffBrush : NgBrush; break; case POINT.THIRD: VmTestResults.PV1_3 = strData1 + "h"; VmTestResults.PV2_3 = strData2 + "h"; VmTestResults.ColPV1_3 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV2_3 = result2 ? OffBrush : NgBrush; break; } } else { switch (point) { case POINT.FIRST: VmTestResults.PV3_1 = strData1 + "h"; VmTestResults.PV4_1 = strData2 + "h"; VmTestResults.ColPV3_1 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV4_1 = result2 ? OffBrush : NgBrush; break; case POINT.SECOND: VmTestResults.PV3_2 = strData1 + "h"; VmTestResults.PV4_2 = strData2 + "h"; VmTestResults.ColPV3_2 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV4_2 = result2 ? OffBrush : NgBrush; break; case POINT.THIRD: VmTestResults.PV3_3 = strData1 + "h"; VmTestResults.PV4_3 = strData2 + "h"; VmTestResults.ColPV3_3 = result1 ? OffBrush : NgBrush; VmTestResults.ColPV4_3 = result2 ? OffBrush : NgBrush; break; } } } }
public static async Task <bool> ReadPt100(NAME_PV name) { bool result1 = false; bool result2 = false; bool result3 = false; string Data1 = ""; string Data2 = ""; string Data3 = ""; string Data1再 = ""; string Data2再 = ""; string Data3再 = ""; State.VmTestStatus.TestLog += $" {name.ToString()} 読み出し"; //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 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), dataList[3].Substring(1) }); //一文字目がスペースなので削除 }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { await Task.Delay(1500);//EEPROMの読み出し確認なので電源OFFして少し待つ if (!await CheckComm()) { return(false); } return(await Task <bool> .Run(() => { var cmd = ""; switch (name) { case NAME_PV.PV1: cmd = "@PV1*"; Data1 = State.VmTestResults.PV1_1.Trim('h'); Data2 = State.VmTestResults.PV1_2.Trim('h'); Data3 = State.VmTestResults.PV1_3.Trim('h'); break; case NAME_PV.PV2: cmd = "@PV2*"; Data1 = State.VmTestResults.PV2_1.Trim('h'); Data2 = State.VmTestResults.PV2_2.Trim('h'); Data3 = State.VmTestResults.PV2_3.Trim('h'); break; case NAME_PV.PV3: cmd = "@PV3*"; Data1 = State.VmTestResults.PV3_1.Trim('h'); Data2 = State.VmTestResults.PV3_2.Trim('h'); Data3 = State.VmTestResults.PV3_3.Trim('h'); break; case NAME_PV.PV4: cmd = "@PV4*"; Data1 = State.VmTestResults.PV4_1.Trim('h'); Data2 = State.VmTestResults.PV4_2.Trim('h'); Data3 = State.VmTestResults.PV4_3.Trim('h'); break; } var List再 = GetData再(cmd); if (List再 == null) { return false; } Data1再 = List再[0]; Data2再 = List再[1]; Data3再 = List再[2]; result1 = Data1再 == Data1; result2 = Data2再 == Data2; result3 = Data3再 == Data3; return result1 && result2 && result3; })); } catch { return(false); } finally { State.VmTestStatus.TestLog += result1 && result2 && result3? "---PASS\r\n" :"---FAIL\r\n"; General.PowerSupply(false); switch (name) { case NAME_PV.PV1: State.VmTestResults.PV1_1RE = Data1再 + "h"; State.VmTestResults.PV1_2RE = Data2再 + "h"; State.VmTestResults.PV1_3RE = Data3再 + "h"; State.VmTestResults.ColPV1_1RE = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPV1_2RE = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPV1_3RE = result3 ? OffBrush : NgBrush; break; case NAME_PV.PV2: State.VmTestResults.PV2_1RE = Data1再 + "h"; State.VmTestResults.PV2_2RE = Data2再 + "h"; State.VmTestResults.PV2_3RE = Data3再 + "h"; State.VmTestResults.ColPV2_1RE = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPV2_2RE = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPV2_3RE = result3 ? OffBrush : NgBrush; break; case NAME_PV.PV3: State.VmTestResults.PV3_1RE = Data1再 + "h"; State.VmTestResults.PV3_2RE = Data2再 + "h"; State.VmTestResults.PV3_3RE = Data3再 + "h"; State.VmTestResults.ColPV3_1RE = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPV3_2RE = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPV3_3RE = result3 ? OffBrush : NgBrush; break; case NAME_PV.PV4: State.VmTestResults.PV4_1RE = Data1再 + "h"; State.VmTestResults.PV4_2RE = Data2再 + "h"; State.VmTestResults.PV4_3RE = Data3再 + "h"; State.VmTestResults.ColPV4_1RE = result1 ? OffBrush : NgBrush; State.VmTestResults.ColPV4_2RE = result2 ? OffBrush : NgBrush; State.VmTestResults.ColPV4_3RE = result3 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> Check断線(MODE mode) { bool resultPV1 = false; bool resultPV2 = false; bool resultPV3 = false; bool resultPV4 = false; var ListDataPV1 = new List <string>(); var ListDataPV2 = new List <string>(); var ListDataPV3 = new List <string>(); var ListDataPV4 = new List <string>(); const string messA = "Circ.CUT"; const string messB = "Circ.SHORT"; const int SampleCnt = 3; //ラムダ式の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Func <bool> GetData = () => { try { General.ClearCommlog(); Target.SendData("TEMP"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(false); } if (General.CountNewline() == SampleCnt + 2) { break; } } Target.Escape(); Sleep(1000); int 検索開始位置 = 0; var log = VmComm.RX; 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(','); ListDataPV1.Add(dataList[1].Substring(1));//一文字目がスペースのため ListDataPV2.Add(dataList[2].Substring(1)); ListDataPV3.Add(dataList[3].Substring(1)); ListDataPV4.Add(dataList[4].Substring(1)); 検索開始位置 = FoundIndex + 1; } return(true); } catch { return(false); } }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var dialogMess = ""; switch (mode) { case MODE.A断線: dialogMess = "チェッカーのA線をすべて上に向けてください"; break; case MODE.B_1断線: dialogMess = "チェッカーのB線をすべて上に向けてください"; break; case MODE.B_2断線: dialogMess = "チェッカーのB’線をすべて上に向けてください"; break; } var dialog = new DialogPic(dialogMess, DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } if (!GetData()) { return false; } Sleep(500); General.PowerSupply(false); Sleep(1000); string mess = ""; if (mode == MODE.A断線) { mess = messA; } else { mess = messB; } resultPV1 = ListDataPV1.All(data => data == mess); resultPV2 = ListDataPV1.All(data => data == mess); resultPV3 = ListDataPV1.All(data => data == mess); resultPV4 = ListDataPV1.All(data => data == mess); return resultPV1 && resultPV2 && resultPV3 && resultPV4; })); } catch { return(false); } finally { General.PowerSupply(false); switch (mode) { case MODE.A断線: VmTestResults.PV1_A = resultPV1 ? "OK" : "NG"; VmTestResults.PV2_A = resultPV2 ? "OK" : "NG"; VmTestResults.PV3_A = resultPV3 ? "OK" : "NG"; VmTestResults.PV4_A = resultPV4 ? "OK" : "NG"; VmTestResults.ColPV1_A = resultPV1 ? OffBrush : NgBrush; VmTestResults.ColPV2_A = resultPV2 ? OffBrush : NgBrush; VmTestResults.ColPV3_A = resultPV3 ? OffBrush : NgBrush; VmTestResults.ColPV4_A = resultPV4 ? OffBrush : NgBrush; break; case MODE.B_1断線: VmTestResults.PV1_B1 = resultPV1 ? "OK" : "NG"; VmTestResults.PV2_B1 = resultPV2 ? "OK" : "NG"; VmTestResults.PV3_B1 = resultPV3 ? "OK" : "NG"; VmTestResults.PV4_B1 = resultPV4 ? "OK" : "NG"; VmTestResults.ColPV1_B1 = resultPV1 ? OffBrush : NgBrush; VmTestResults.ColPV2_B1 = resultPV2 ? OffBrush : NgBrush; VmTestResults.ColPV3_B1 = resultPV3 ? OffBrush : NgBrush; VmTestResults.ColPV4_B1 = resultPV4 ? OffBrush : NgBrush; break; case MODE.B_2断線: VmTestResults.PV1_B2 = resultPV1 ? "OK" : "NG"; VmTestResults.PV2_B2 = resultPV2 ? "OK" : "NG"; VmTestResults.PV3_B2 = resultPV3 ? "OK" : "NG"; VmTestResults.PV4_B2 = resultPV4 ? "OK" : "NG"; VmTestResults.ColPV1_B2 = resultPV1 ? OffBrush : NgBrush; VmTestResults.ColPV2_B2 = resultPV2 ? OffBrush : NgBrush; VmTestResults.ColPV3_B2 = resultPV3 ? OffBrush : NgBrush; VmTestResults.ColPV4_B2 = resultPV4 ? OffBrush : NgBrush; break; } } }
public static async Task <bool> CheckNormal() { bool resultPV1 = false; bool resultPV1下限 = false; bool resultPV1上限 = false; bool resultPV2 = false; bool resultPV2下限 = false; bool resultPV2上限 = false; bool resultPV3 = false; bool resultPV3下限 = false; bool resultPV3上限 = false; bool resultPV4 = false; bool resultPV4下限 = false; bool resultPV4上限 = false; string dataPV1 = ""; string dataPV2 = ""; string dataPV3 = ""; string dataPV4 = ""; const int SampleCnt = 5; var ListDataPV1 = new List <double>(); var ListDataPV2 = new List <double>(); var ListDataPV3 = new List <double>(); var ListDataPV4 = new List <double>(); //ラムダ式の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Func <bool> GetData = () => { try { General.ClearCommlog(); Target.SendData("TEMP"); while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ { if (Flags.ClickStopButton) { return(false); } if (General.CountNewline() == SampleCnt + 2) { break; } } Target.Escape(); Sleep(1000); int 検索開始位置 = 0; var log = State.VmComm.RX; 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(','); ListDataPV1.Add(Double.Parse(dataList[1])); ListDataPV2.Add(Double.Parse(dataList[2])); ListDataPV3.Add(Double.Parse(dataList[3])); ListDataPV4.Add(Double.Parse(dataList[4])); 検索開始位置 = FoundIndex + 1; } return(true); } catch { return(false); } }; //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ try { var dialog = new DialogPic("①CN1,3,5,7にチェッカーからのケーブルを接続してください\r\n②チェッカーの断線スイッチをすべて下に向けてください", DialogPic.NAME.その他); dialog.ShowDialog(); return(await Task <bool> .Run(() => { //電源ONする処理 General.PowerSupply(true); if (!General.CheckDemo表示()) { return false; } if (!GetData()) { return false; } Sleep(500); General.PowerSupply(false); Sleep(1000); resultPV1下限 = ListDataPV1.All(data => data >= State.TestSpec.PT100_NormalTemp_Min); resultPV1上限 = ListDataPV1.All(data => data <= State.TestSpec.PT100_NormalTemp_Max); resultPV1 = resultPV1下限 && resultPV1上限; resultPV2下限 = ListDataPV2.All(data => data >= State.TestSpec.PT100_NormalTemp_Min); resultPV2上限 = ListDataPV2.All(data => data <= State.TestSpec.PT100_NormalTemp_Max); resultPV2 = resultPV2下限 && resultPV2上限; resultPV3下限 = ListDataPV3.All(data => data >= State.TestSpec.PT100_NormalTemp_Min); resultPV3上限 = ListDataPV3.All(data => data <= State.TestSpec.PT100_NormalTemp_Max); resultPV3 = resultPV3下限 && resultPV3上限; resultPV4下限 = ListDataPV4.All(data => data >= State.TestSpec.PT100_NormalTemp_Min); resultPV4上限 = ListDataPV4.All(data => data <= State.TestSpec.PT100_NormalTemp_Max); resultPV4 = resultPV4下限 && resultPV4上限; ListDataPV1.Sort(); if (resultPV1) { dataPV1 = ListDataPV1[SampleCnt / 2].ToString("F1") + "℃";//中央値 } else { if (!resultPV1下限) { dataPV1 = ListDataPV1[0].ToString("F1") + "℃";//Min } else { dataPV1 = ListDataPV1[SampleCnt - 1].ToString("F1") + "℃";//Max } } ListDataPV2.Sort(); if (resultPV2) { dataPV2 = ListDataPV2[SampleCnt / 2].ToString("F1") + "℃";//中央値 } else { if (!resultPV2下限) { dataPV2 = ListDataPV2[0].ToString("F1") + "℃";//Min } else { dataPV2 = ListDataPV2[SampleCnt - 1].ToString("F1") + "℃";//Max } } ListDataPV3.Sort(); if (resultPV3) { dataPV3 = ListDataPV3[SampleCnt / 2].ToString("F1") + "℃";//中央値 } else { if (!resultPV3下限) { dataPV3 = ListDataPV3[0].ToString("F1") + "℃";//Min } else { dataPV3 = ListDataPV3[SampleCnt - 1].ToString("F1") + "℃";//Max } } ListDataPV4.Sort(); if (resultPV4) { dataPV4 = ListDataPV4[SampleCnt / 2].ToString("F1") + "℃";//中央値 } else { if (!resultPV4下限) { dataPV4 = ListDataPV4[0].ToString("F1") + "℃";//Min } else { dataPV4 = ListDataPV4[SampleCnt - 1].ToString("F1") + "℃";//Max } } return resultPV1 && resultPV2 && resultPV3 && resultPV4; })); } catch { return(false); } finally { General.PowerSupply(false); VmTestResults.PV1_N = dataPV1; VmTestResults.PV2_N = dataPV2; VmTestResults.PV3_N = dataPV3; VmTestResults.PV4_N = dataPV4; VmTestResults.ColPV1_N = resultPV1 ? OffBrush : NgBrush; VmTestResults.ColPV2_N = resultPV2 ? OffBrush : NgBrush; VmTestResults.ColPV3_N = resultPV3 ? OffBrush : NgBrush; VmTestResults.ColPV4_N = resultPV4 ? OffBrush : NgBrush; } }