Beispiel #1
0
        private void MetroWindow_Closed(object sender, EventArgs e)
        {
            try
            {
                while (Flags.Initializing周辺機器)
                {
                    ;
                }

                Target.ClosePort();

                if (Flags.StateEpx64)
                {
                    General.ResetIo();
                    General.io.Close();//IO閉じる
                }

                if (Flags.State5107B)
                {
                    General.osc.Close();
                }

                if (Flags.State323x)
                {
                    Hioki3239.ClosePort();
                }

                if (Flags.StateWavGen)
                {
                    WaveFormGenerator.Close();
                }

                if (Flags.State7012)
                {
                    HIOKI7012.ClosePort();
                }

                if (!State.Save個別データ())
                {
                    MessageBox.Show("個別データの保存に失敗しました");
                }
                if (!General.SaveRetryLog())
                {
                    MessageBox.Show("リトライログの保存に失敗しました");
                }
            }
            catch
            {
            }
        }
Beispiel #2
0
        public static bool SetFG_6Vrms()
        {
            double value = WaveFormGenerator.Flag33220 ? 0.00025 : 0.001;

            try
            {
                double 入力電圧初期値 = 3.020;//Vrms
                double OutBuff = 0;
                WaveFormGenerator.サイン波出力(50.0, 50.0, 入力電圧初期値, 0.0);
                OutBuff = 入力電圧初期値;
                //AGI33220A.サイン波出力(50.0, 50.0, 入力電圧初期値, 0.0);

                var Tm = new GeneralTimer(15000);
                Tm.Start();
                while (true)
                {
                    if (Tm.FlagTimeout || Flags.ClickStopButton)
                    {
                        return(false);
                    }
                    Hioki3239.GetAcVolt(Hioki3239.ACV_Range.R20V);
                    if (Hioki3239.VoltData >= 6.000 && Hioki3239.VoltData <= 6.005)
                    {
                        break;
                    }

                    if (Hioki3239.VoltData < 6.000)
                    {
                        OutBuff += value;
                        WaveFormGenerator.ChangeVoltage(OutBuff);
                        //AGI33220A.ChangeVoltage(入力電圧初期値 + (0.001 * cnt));
                    }
                    else if (Hioki3239.VoltData > 6.005)
                    {
                        OutBuff -= value;
                        WaveFormGenerator.ChangeVoltage(OutBuff);
                        //AGI33220A.ChangeVoltage(入力電圧初期値 - (0.001 * cnt));
                    }
                    Sleep(500);
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #3
0
 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 bool SetFG_6_5Vrms()
        {
            try
            {
                double 入力電圧初期値 = 3.275;//Vrms
                WaveFormGenerator.サイン波出力(50.0, 50.0, 入力電圧初期値, 0.0);
                double buff = 入力電圧初期値;
                Tm.Stop();
                Tm.Interval = 18000;
                FlagTimer   = true;
                Tm.Start();
                while (true)
                {
                    if (!FlagTimer || Flags.ClickStopButton)
                    {
                        return(false);
                    }
                    Application.DoEvents();
                    Hioki3239.GetAcVolt(Hioki3239.ACV_Range.R20V);
                    if (Hioki3239.VoltData >= 6.497 && Hioki3239.VoltData <= 6.503)
                    {
                        break;
                    }

                    if (Hioki3239.VoltData < 6.497)
                    {
                        buff += 0.002;
                        WaveFormGenerator.ChangeVoltage(buff);
                    }
                    else if (Hioki3239.VoltData > 6.503)
                    {
                        buff -= 0.002;
                        WaveFormGenerator.ChangeVoltage(buff);
                    }
                    Sleep(200);
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #5
0
        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;
            });
        }