Exemple #1
0
 public static bool CheckDemo表示()
 {
     try
     {
         var tm = new GeneralTimer(6000);
         tm.Start();
         while (true)
         {
             if (tm.FlagTimeout || Flags.ClickStopButton)
             {
                 return(false);
             }
             if (State.VmComm.RX.Contains("Program Number PFA3097\r\n\r\n>> "))
             {
                 tm.stop();
                 Sleep(300);
                 ClearCommlog();
                 return(true);
             }
         }
     }
     catch
     {
         ClearCommlog();
         return(false);
     }
 }
Exemple #2
0
        List <double> IOscilloscope.GetWav()
        {
            var List_Wav = new List <double>();

            SetRun();
            Thread.Sleep(3000);
            var ListByteData_換算前 = new List <byte>();
            var ListDoubleData   = new List <double>();

            SendCommand(":WAV:DATA? CHAN1");

            try
            {
                int cnt = 0;
                var tm  = new GeneralTimer(5000);
                tm.Start();
                while (true)
                {
                    if (tm.FlagTimeout || Flags.ClickStopButton)
                    {
                        return(null);
                    }
                    if (Port.BytesToRead == 0)
                    {
                        continue;
                    }
                    var buff = Port.ReadByte();
                    ListByteData_換算前.Add((byte)buff);
                    if (++cnt == 604)
                    {
                        //この時点で、ListByteData_換算前には波形データ(604 <4(ヘッダ) + 600(データ) = 604>)が入っている
                        //注意1:ListByteDataの添字[0]~[3]はヘッダデータのため削除する
                        //注意2:ListByteDataの値は生のバイナリデータであるため、別クラスで使用するためには下記の換算処理が必要となる
                        //電圧(V) = {(125-AD 値)/25}×垂直軸レンジ - OFFSET

                        var    dataList = ListByteData_換算前.Skip(4).ToList <byte>();
                        double 垂直軸レンジ   = Double.Parse(VerticalRange);
                        double OFFSET   = Double.Parse(VerticalOffset);


                        dataList.ForEach(d =>
                        {
                            List_Wav.Add((((125 - d) / 25.0) * 垂直軸レンジ) - OFFSET);
                        });

                        return(List_Wav);
                    }
                }
            }
            catch
            {
                return(null);
            }
        }
Exemple #3
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);
            }
        }
        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);
            }
        }