private async void buttonSave_Click(object sender, RoutedEventArgs e) { if (cbYear.SelectedIndex == -1 || cbMonth.SelectedIndex == -1) { return; } buttonSave.Background = Brushes.DodgerBlue; //保存する処理 var NewYear = cbYear.SelectedItem.ToString().Substring(2); var NewMonth = Int32.Parse(cbMonth.SelectedItem.ToString()).ToString("D2"); if (State.TestItem == ITEM._30167671) { State.Setting.NextSerial30167671 = NewYear + NewMonth + "00001"; } else { State.Setting.NextSerial30221500 = NewYear + NewMonth + "00001"; } State.SetSerialInfo(); State.VmMainWindow.SerialNumber = State.シリアルナンバー年月部分 + State.NewSerial.ToString("D5"); General.PlaySound(General.soundBattery); await Task.Delay(150); buttonSave.Background = Brushes.Transparent; }
private void metroWindow_Loaded(object sender, RoutedEventArgs e) { if (soundSw) { General.PlaySound(General.soundNotice); } ButtonOk.Focus(); imagePic.Source = new BitmapImage(new Uri("Resources/Pic/" + PicName, UriKind.Relative)); }
private async void buttonSave_Click(object sender, RoutedEventArgs e) { buttonSave.Background = Brushes.DodgerBlue; //保存する処理 State.VmMainWindow.ListOperator = new List <string>(vmEdit.ListOperator); General.PlaySound(General.soundBattery); await Task.Delay(150); buttonSave.Background = Brushes.Transparent; //App._navi.Refresh(); }
private void metroWindow_Loaded(object sender, RoutedEventArgs e) { General.PlaySound(General.soundNotice); ButtonOk.Focus(); var rootPath = "Resources/Pic出力回路/"; switch (mode) { case TEST_出力回路.MODE.OUTP_ON: imagePic.Source = new BitmapImage(new Uri(rootPath + "汎用出力12点灯_.jpg", UriKind.Relative)); labelMessage.Content = "チェッカーのLEDが点灯していますか?"; break; case TEST_出力回路.MODE.OUTP_OFF1: imagePic.Source = new BitmapImage(new Uri(rootPath + "その他点灯_.jpg", UriKind.Relative)); labelMessage.Content = "チェッカーのLEDが点灯していますか?"; break; case TEST_出力回路.MODE.OUTP_OFF2: imagePic.Source = new BitmapImage(new Uri(rootPath + "基板LED点灯_.jpg", UriKind.Relative)); labelMessage.Content = "基板のLEDが点灯していますか?"; break; case TEST_出力回路.MODE.INTERLOCK1: imagePic.Source = new BitmapImage(new Uri(rootPath + "Interlock1.jpg", UriKind.Relative)); labelMessage.Content = "外部非常停止SWを上向きにすると、\r\nインターロックLEDが点灯しますか?"; break; case TEST_出力回路.MODE.INTERLOCK2: imagePic.Source = new BitmapImage(new Uri(rootPath + "Interlock2.jpg", UriKind.Relative)); labelMessage.Content = "インバータ過昇温SWを上向きにすると、\r\nインターロックLEDが消灯しますか?"; break; case TEST_出力回路.MODE.INTERLOCK3: if (State.TestItem == ITEM._30167671) { imagePic.Source = new BitmapImage(new Uri(rootPath + "Interlock30167671.jpg", UriKind.Relative)); labelMessage.Content = "インバータ過昇温SWを下向きにしても、\r\nインターロックLEDが消灯したままですか?"; } else { imagePic.Source = new BitmapImage(new Uri(rootPath + "Interlock30221500.jpg", UriKind.Relative)); labelMessage.Content = "インバータ過昇温SWを下向きにすると、\r\nインターロックLEDが点灯しますか?"; } break; } }
private void buttonReturn_Click(object sender, RoutedEventArgs e) { General.StopSound(); //テーマ透過度を元に戻す State.VmMainWindow.ThemeOpacity = State.CurrentThemeOpacity; General.ResetViewModel(); Flags.ShowLabelPage = false; State.VmMainWindow.TabIndex = 0; RefreshDataContextFromLabelForm(); (FindResource("BlinkButton") as Storyboard).Stop(); General.PlaySound(General.soundBattery); }
private void Button_Click_1(object sender, RoutedEventArgs e) { General.PlaySound(General.soundFail); }
private void Button_Click(object sender, RoutedEventArgs e) { General.PlaySound(General.soundTotsugeki); }
private void metroWindow_Loaded(object sender, RoutedEventArgs e) { State.VmTestResults.AlarmPoint = ""; General.PlaySound(General.soundNotice); tbResValue.Focus(); }
//メインルーチン 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(); } } }
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> 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; } } } }