public static async Task <bool> InitAll() { return(await Task <bool> .Run(() => { Sleep(3000); io.Close(); Sleep(200); HIOKI7012.ClosePort(); Sleep(200); Hioki3239.ClosePort(); Sleep(200); osc.Close(); Sleep(200); WaveFormGenerator.Close(); Sleep(200); FindSerialPort.GetDeviceNames(); Sleep(500); Flags.StateEpx64 = General.io.InitEpx64R(0x7F);//0111 1111 ※P7入力 その他出力 if (!Flags.StateEpx64) { return false; } Flags.State7012 = HIOKI7012.Init7012(); if (!Flags.State7012) { return false; } Flags.State323x = Hioki3239.Init323x(); if (!Flags.State323x) { return false; } Flags.State5107B = General.osc.Init(); if (!Flags.State5107B) { return false; } Flags.StateWavGen = WaveFormGenerator.Initialize(); if (!Flags.StateWavGen) { return false; } return true; })); }
public static void Init周辺機器()//TODO: { Flags.Initializing周辺機器 = true; Target.OpenPort();//COM1のため、無条件でOKとする 判定はしない //EPX64Sの初期化 bool StopEpx64 = false; Task.Run(() => { //IOボードの初期化 io = new EPX64R(); while (true) { if (Flags.StopInit周辺機器) { break; } Flags.StateEpx64 = General.io.InitEpx64R(0x7F);//0111 1111 ※P7入力 その他出力 if (Flags.StateEpx64) { //IOボードのリセット(出力をすべてLする) ResetIo(); break; } Sleep(500); } StopEpx64 = true; }); //ファンクションジェネレータの初期化 bool StopWavGen = false; Task.Run(() => { while (true) { if (Flags.StopInit周辺機器) { break; } Flags.StateWavGen = WaveFormGenerator.Initialize(); if (Flags.StateWavGen) { break; } Thread.Sleep(400); } StopWavGen = true; }); //HIOKI7012の初期化 bool Stop7012 = false; Task.Run(() => { while (true) { if (Flags.StopInit周辺機器) { break; } Flags.State7012 = HIOKI7012.Init7012(); if (Flags.State7012) { HIOKI7012.StopSource(); break; } Sleep(500); } Stop7012 = true; }); //USBシリアル変換器を使うので、通信がかち合わないように順番に初期化を行う //マルチメータの初期化 //オシロスコープの初期化 bool Stop323x = false; bool Stop5107B = false; osc = new DS_5107B(); Task.Run(() => { while (true) { if (Flags.StopInit周辺機器 || (Flags.State323x && Flags.State5107B)) { break; } if (!Flags.State323x) { Flags.State323x = Hioki3239.Init323x(); } if (!Flags.State5107B) { Flags.State5107B = osc.Init(); if (Flags.State5107B) { osc.SetBasicConf(); } } Sleep(500); } Stop323x = Stop5107B = true; }); Task.Run(() => { while (true) { CheckAll周辺機器フラグ(); //EPX64Sの初期化の中で、K100、K101の溶着チェックを行っているが、これがNGだとしてもInit周辺機器()は終了する var IsAllStopped = StopEpx64 && Stop7012 && Stop5107B && Stop323x && StopWavGen; if (Flags.AllOk周辺機器接続 || IsAllStopped) { break; } Thread.Sleep(400); } Flags.Initializing周辺機器 = false; }); }