コード例 #1
0
 public static async Task <bool> CheckComm()
 {
     return(await Task <bool> .Run(() =>
     {
         General.PowerSupply(true);
         return General.CheckDemo表示();
     }));
 }
コード例 #2
0
ファイル: Mente.xaml.cs プロジェクト: Ryoichi1/30167671Tester
 private void Page_Unloaded(object sender, RoutedEventArgs e)
 {
     General.PowerSupply(false);
     if (!IsPortOpen)
     {
         Target.OpenPort();
     }
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        public static async Task<bool> SetVref()
        {
            string HexStr = "";
            bool result = false;

            try
            {
                return await Task<bool>.Run(() =>
                {
                    Sleep(1000);
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                        return false;

                    Target.SendData("VREFSET");

                    while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ
                    {
                        if (Flags.ClickStopButton) return false;
                        if (General.CountNewline() == 2) break;
                    }
                    Target.Escape();

                    var log = State.VmComm.RX;
                    var FoundIndex = log.IndexOf("VREFSET,");
                    var 改行位置 = log.IndexOf("\r\n", FoundIndex);
                    var 取り出し1行 = log.Substring(FoundIndex, 改行位置 - FoundIndex);
                    var dataList = 取り出し1行.Split(',');
                    HexStr = dataList[2].Substring(1);//一文字目がスペースなので削除する
                    State.VmTestResults.Vref = HexStr + "h";
                    var value = Convert.ToInt32(HexStr, 16);

                    return result = (Convert.ToInt32(State.TestSpec.Vref調整_Min, 16) <= value && value <= Convert.ToInt32(State.TestSpec.Vref調整_Max, 16));

                });
            }
            catch
            {
                return false;
            }
            finally
            {
                General.PowerSupply(false);
                Sleep(2000);

                //VMの更新
                State.VmTestResults.ColVref_Re = result ? OffBrush : NgBrush;

            }
        }
コード例 #5
0
 public static async Task <bool> Set()
 {
     return(await Task <bool> .Run(() =>
     {
         //電源ONする処理
         General.PowerSupply(true);
         if (!General.CheckDemo表示())
         {
             return false;
         }
         Sleep(1500);
         return SetFG_6Vrms();//ファンクションジェネレータを調整する
     }));
 }
コード例 #6
0
        public static async Task <bool> WriteFw()
        {
            bool result = false;

            try
            {
                Target.ClosePort();//FDTとバッティングするためいったん閉じる
                var dialog = new DialogPic("SW1-7番をONしてください", DialogPic.NAME.その他);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                General.PowerSupply(true);
                Sleep(1000);
                result = await FDT.WriteFirmware(Constants.FdtPath, State.TestSpec.FirmwareSum);

                General.PowerSupply(false); //電源ON→OFF
                Target.OpenPort();          //次ステップに備えてポートを開いておく
                return(result);
            }
            catch
            {
                return(result = false);
            }
            finally
            {
                if (result)
                {
                    var dialog = new DialogPic("①SW1-7番をOFFしてください\r\n②SW2、SW3をすべてONしてください", DialogPic.NAME.その他);
                    dialog.ShowDialog();
                }
                else
                {
                    State.VmTestStatus.Spec      = "規格値 : チェックサム ";
                    State.VmTestStatus.MeasValue = "計測値 : チェックサム ";
                }
            }
        }
コード例 #7
0
        public static async Task <bool> CheckRS485_1()
        {
            try
            {
                return(await Task <bool> .Run(() =>
                {
                    Sleep(1000);
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("RS485_1");

                    while (true)//取り込んだ通信データが7行以上になるまで待つ
                    {
                        if (Flags.ClickStopButton)
                        {
                            return false;
                        }
                        if (General.CountNewline() == 3)
                        {
                            break;
                        }
                    }

                    return (State.VmComm.RX.IndexOf("485(2w) Host->Mst/Slv[19200dbps] = OK") >= 0) && (State.VmComm.RX.IndexOf("485(2w) Mst/Slv->Host[19200dbps] = OK") >= 0);
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
            }
        }
コード例 #8
0
        public static async Task <bool> CheckRS232C()
        {
            try
            {
                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("RS232C");

                    while (true)//取り込んだ通信データが7行以上になるまで待つ
                    {
                        if (Flags.ClickStopButton)
                        {
                            return false;
                        }
                        if (General.CountNewline() == 2)
                        {
                            break;
                        }
                    }

                    return (State.VmComm.RX.IndexOf("232C Host->Host(loopback)[19200dbps] = OK") >= 0);
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
            }
        }
コード例 #9
0
        public static async Task <bool> Check警報点()
        {
            bool result = false;

            警報点抵抗値 = 0;
            try
            {
                General.SetCn10to6ダイヤル抵抗();
                var dialog = new DialogPic("6ダイヤル抵抗器を157.1オームに設定してね", DialogPic.NAME.その他);
                dialog.ShowDialog();

                General.PowerSupply(true);
                await Task.Delay(2000);

                dialog = new DialogPic("抵抗値を少しずつ上げて、\r\nチェッカーの温度警報ランプが点灯したらOKを押してね", DialogPic.NAME.その他);
                dialog.ShowDialog();

                var dialoginput = new DialogInput();
                dialoginput.ShowDialog();

                var resValue = Double.Parse(State.VmTestResults.AlarmPoint);

                result = (State.TestSpec.警報発報点_Min <= resValue && resValue <= State.TestSpec.警報発報点_Max);
                return(result);
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);

                //VM更新
                State.VmTestResults.AlarmPoint   += "Ω";//finally句に入る前は、数値だけが入力されているので注意
                State.VmTestResults.ColAlarmPoint = result ? OffBrush : NgBrush;
            }
        }
コード例 #10
0
        public static async Task <bool> CheckDISP()
        {
            try
            {
                var re = await Task <bool> .Run(() =>
                {
                    Sleep(1000);
                    //電源ONする処理
                    General.PowerSupply(true);
                    return(General.CheckDemo表示());
                });

                if (!re)
                {
                    return(false);
                }
                var mess   = "OKボタンを押して表示基板の検査をしてください\r\n①LEDが左上から順に点灯すること\r\n②0~9の数字が順に点灯すること\r\n③各ボタンを押しブザーが鳴ること";
                var dialog = new DialogPic(mess, DialogPic.NAME.その他);
                dialog.ShowDialog();

                Target.SendData("DISP");
                await Task.Delay(5000);

                dialog = new DialogPic("表示基板の機能は正常ですか?", DialogPic.NAME.その他);
                dialog.ShowDialog();

                return(Flags.DialogReturn);
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
            }
        }
コード例 #11
0
        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;
                }
            }
        }
コード例 #12
0
        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;
                }
            }
        }
コード例 #13
0
        public static async Task <bool> CheckDIN(MODE mode)
        {
            ErrMessage = "";

            bool result = false;
            bool rePA   = false;
            bool rePB   = false;
            bool rePC   = false;
            bool rePE   = false;
            bool rePH   = false;
            bool rePL   = false;

            string ExPA = "";
            string ExPB = "";
            string ExPC = "";
            string ExPE = "";
            string ExPH = "";
            string ExPL = "";

            string DataPA = "";
            string DataPB = "";
            string DataPC = "";
            string DataPE = "";
            string DataPH = "";
            string DataPL = "";


            try
            {
                var dialog = new DialogPic(mode == MODE.OFF ? "赤枠のスイッチをすべてOFF(↓)にしてください" : "赤枠のスイッチをすべてON(↑)にしてください", DialogPic.NAME.その他);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("DIN");

                    while (true)
                    {
                        if (Flags.ClickStopButton)
                        {
                            return false;
                        }
                        if (General.CountNewline() == 5)
                        {
                            break;
                        }
                    }
                    Target.Escape();
                    var log = State.VmComm.RX;
                    int FoundIndex = log.IndexOf("DIN,", 0);
                    DataPA = log.Substring(FoundIndex + 5, 4);
                    DataPB = log.Substring(FoundIndex + 11, 4);
                    DataPC = log.Substring(FoundIndex + 17, 4);
                    DataPE = log.Substring(FoundIndex + 23, 4);
                    DataPH = log.Substring(FoundIndex + 29, 4);
                    DataPL = log.Substring(FoundIndex + 35, 4);

                    switch (mode)
                    {
                    case MODE.OFF:
                        ExPA = OFF_PA;
                        ExPB = OFF_PB;
                        ExPC = OFF_PC;
                        ExPE = OFF_PE;
                        ExPH = OFF_PH;
                        ExPL = OFF_PL;
                        break;

                    case MODE.ON:
                        ExPA = ON_PA;
                        ExPB = ON_PB;
                        ExPC = ON_PC;
                        ExPE = ON_PE;
                        ExPH = ON_PH;
                        ExPL = ON_PL;
                        break;
                    }

                    rePA = (DataPA == ExPA);
                    rePB = (DataPB == ExPB);
                    rePC = (DataPC == ExPC);
                    rePE = (DataPE == ExPE);
                    rePH = (DataPH == ExPH);
                    rePL = (DataPL == ExPL);

                    result = rePA && rePB && rePC && rePE && rePH && rePL;

                    //エラーメッセージの作成
                    ErrMessage += rePA ? "" : ERR_PA + "\r\n";
                    ErrMessage += rePB ? "" : ERR_PB + "\r\n";
                    ErrMessage += rePC ? "" : ERR_PC + "\r\n";
                    ErrMessage += rePE ? "" : ERR_PE + "\r\n";
                    ErrMessage += rePH ? "" : ERR_PH + "\r\n";
                    ErrMessage += rePL ? "" : ERR_PL + "\r\n";
                    ErrMessage += "の接続を確認してください";

                    return result;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);

                if (mode == MODE.OFF)
                {
                    VmTestResults.PA_OFF = DataPA;
                    VmTestResults.PB_OFF = DataPB;
                    VmTestResults.PC_OFF = DataPC;
                    VmTestResults.PE_OFF = DataPE;
                    VmTestResults.PH_OFF = DataPH;
                    VmTestResults.PL_OFF = DataPL;

                    VmTestResults.ColPA_OFF = rePA ? OffBrush : NgBrush;
                    VmTestResults.ColPB_OFF = rePB ? OffBrush : NgBrush;
                    VmTestResults.ColPC_OFF = rePC ? OffBrush : NgBrush;
                    VmTestResults.ColPE_OFF = rePE ? OffBrush : NgBrush;
                    VmTestResults.ColPH_OFF = rePH ? OffBrush : NgBrush;
                    VmTestResults.ColPL_OFF = rePL ? OffBrush : NgBrush;
                }
                else
                {
                    VmTestResults.PA_ON = DataPA;
                    VmTestResults.PB_ON = DataPB;
                    VmTestResults.PC_ON = DataPC;
                    VmTestResults.PE_ON = DataPE;
                    VmTestResults.PH_ON = DataPH;
                    VmTestResults.PL_ON = DataPL;

                    VmTestResults.ColPA_ON = rePA ? OffBrush : NgBrush;
                    VmTestResults.ColPB_ON = rePB ? OffBrush : NgBrush;
                    VmTestResults.ColPC_ON = rePC ? OffBrush : NgBrush;
                    VmTestResults.ColPE_ON = rePE ? OffBrush : NgBrush;
                    VmTestResults.ColPH_ON = rePH ? OffBrush : NgBrush;
                    VmTestResults.ColPL_ON = rePL ? OffBrush : NgBrush;
                }

                if (mode == MODE.ON)
                {
                    var dialog = new DialogPic("赤枠のスイッチをすべてOFF(↓)に戻してください", DialogPic.NAME.その他);
                    dialog.ShowDialog();
                    await Task.Delay(300);
                }
            }
        }
コード例 #14
0
        public static async Task <bool> CheckPWVOUT(DV_CH ch)
        {
            bool result0   = false;
            bool result50  = false;
            bool result100 = false;

            string Data0   = "";
            string Data50  = "";
            string Data100 = "";

            try
            {
                return(await Task <bool> .Run(() =>
                {
                    switch (ch)
                    {
                    case DV_CH.DV2:
                        General.Set7012Meas(General.MEAS_CH.DV2);
                        break;

                    case DV_CH.DV4:
                        General.Set7012Meas(General.MEAS_CH.DV4);
                        break;

                    case DV_CH.DV6:
                        General.Set7012Meas(General.MEAS_CH.DV6);
                        break;

                    case DV_CH.DV8:
                        General.Set7012Meas(General.MEAS_CH.DV8);
                        break;
                    }


                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("PWVOUT 0 0 0 0");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData;

                    Target.SendData("PWVOUT 50 50 50 50");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas50 = HIOKI7012.VoltData;

                    Target.SendData("PWVOUT 100 100 100 100");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas100 = HIOKI7012.VoltData;

                    result0 = (State.TestSpec.Vout_0_Min <= Meas0 && Meas0 <= State.TestSpec.Vout_0_Max);
                    result50 = (State.TestSpec.Vout_50_Min <= Meas50 && Meas50 <= State.TestSpec.Vout_50_Max);
                    result100 = (State.TestSpec.Vout_100_Min <= Meas100 && Meas100 <= State.TestSpec.Vout_100_Max);

                    Data0 = Meas0.ToString("F2") + "V";
                    Data50 = Meas50.ToString("F2") + "V";
                    Data100 = Meas100.ToString("F2") + "V";

                    return result0 && result50 && result100;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
                switch (ch)
                {
                case DV_CH.DV2:
                    State.VmTestResults.DV2_0      = Data0;
                    State.VmTestResults.DV2_50     = Data50;
                    State.VmTestResults.DV2_100    = Data100;
                    State.VmTestResults.ColDV2_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV2_50  = result50 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV2_100 = result100 ? OffBrush : NgBrush;
                    break;

                case DV_CH.DV4:
                    State.VmTestResults.DV4_0      = Data0;
                    State.VmTestResults.DV4_50     = Data50;
                    State.VmTestResults.DV4_100    = Data100;
                    State.VmTestResults.ColDV4_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV4_50  = result50 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV4_100 = result100 ? OffBrush : NgBrush;
                    break;

                case DV_CH.DV6:
                    State.VmTestResults.DV6_0      = Data0;
                    State.VmTestResults.DV6_50     = Data50;
                    State.VmTestResults.DV6_100    = Data100;
                    State.VmTestResults.ColDV6_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV6_50  = result50 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV6_100 = result100 ? OffBrush : NgBrush;
                    break;

                case DV_CH.DV8:
                    State.VmTestResults.DV8_0      = Data0;
                    State.VmTestResults.DV8_50     = Data50;
                    State.VmTestResults.DV8_100    = Data100;
                    State.VmTestResults.ColDV8_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV8_50  = result50 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV8_100 = result100 ? OffBrush : NgBrush;
                    break;
                }
            }
        }
コード例 #15
0
        public static async Task <bool> CheckPWTMP_V(DV_CH ch)
        {
            bool result0  = false;
            bool result40 = false;
            bool result75 = false;

            string Data0  = "";
            string Data40 = "";
            string Data75 = "";



            try
            {
                return(await Task <bool> .Run(() =>
                {
                    switch (ch)
                    {
                    case DV_CH.DV10:
                        General.Set7012Meas(General.MEAS_CH.DV10);
                        break;

                    case DV_CH.DV12:
                        General.Set7012Meas(General.MEAS_CH.DV12);
                        break;
                    }

                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("PWTMP_V 0 0");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData;

                    Target.SendData("PWTMP_V 40 40");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas40 = HIOKI7012.VoltData;

                    Target.SendData("PWTMP_V 75 75");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas75 = HIOKI7012.VoltData;

                    result0 = (State.TestSpec.Temp_V_0_Min <= Meas0 && Meas0 <= State.TestSpec.Temp_V_0_Max);
                    result40 = (State.TestSpec.Temp_V_40_Min <= Meas40 && Meas40 <= State.TestSpec.Temp_V_40_Max);
                    result75 = (State.TestSpec.Temp_V_75_Min <= Meas75 && Meas75 <= State.TestSpec.Temp_V_75_Max);

                    Data0 = Meas0.ToString("F2") + "V";
                    Data40 = Meas40.ToString("F2") + "V";
                    Data75 = Meas75.ToString("F2") + "V";

                    return result0 && result40 && result75;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
                switch (ch)
                {
                case DV_CH.DV10:
                    State.VmTestResults.DV10_0     = Data0;
                    State.VmTestResults.DV10_40    = Data40;
                    State.VmTestResults.DV10_75    = Data75;
                    State.VmTestResults.ColDV10_0  = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV10_40 = result40 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV10_75 = result75 ? OffBrush : NgBrush;
                    break;

                case DV_CH.DV12:
                    State.VmTestResults.DV12_0     = Data0;
                    State.VmTestResults.DV12_40    = Data40;
                    State.VmTestResults.DV12_75    = Data75;
                    State.VmTestResults.ColDV12_0  = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV12_40 = result40 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV12_75 = result75 ? OffBrush : NgBrush;
                    break;
                }
            }
        }
コード例 #16
0
        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);
            }
        }
コード例 #17
0
        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;
                }
            }
        }
コード例 #18
0
        public static async Task <List <double> > GetMasterData(MODE mode)
        {
            try
            {
                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return null;
                    }
                    Sleep(1500);

                    if (!SetFG_6Vrms())
                    {
                        return null;                //ファンクションジェネレータを調整する
                    }
                    Sleep(500);

                    //モードによりオシロの設定を変更する(時間軸の設定のみ)
                    if (mode == MODE.位相制御)
                    {
                        General.osc.Set位相制御();
                    }
                    else
                    {
                        General.osc.Setサイクル制御();
                    }

                    Sleep(1000);

                    //波形出力コマンド送信
                    if (mode == MODE.位相制御)
                    {
                        Target.SendData("MVP 50 50");
                        Sleep(3500);
                    }
                    else
                    {
                        Target.SendData("MVP 50 50");
                        Sleep(4000);
                        Target.SendData("MVC 50");
                        Sleep(3500);
                    }

                    //波形データ取得
                    if (!GetWavData())
                    {
                        return null;
                    }


                    return FilterData;
                }));
            }
            catch
            {
                return(null);
            }
            finally
            {
                WaveFormGenerator.SourceOff();
                General.PowerSupply(false);
            }
        }
コード例 #19
0
        public static async Task <bool> CheckLeak()
        {
            bool result   = false;
            bool result下限 = false;
            bool result上限 = false;

            string resultData = "";

            const int SampleCnt = 20;

            State.VmTestStatus.TestLog += " 20kΩ確認";

            //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            List <double> GetData()
            {
                var listData = new List <double>();

                Target.SendData("LS_R");

                while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ
                {
                    if (Flags.ClickStopButton)
                    {
                        return(null);
                    }
                    if (General.CountNewline() == SampleCnt + 2)
                    {
                        break;
                    }
                }
                Target.Escape();

                int 検索開始位置 = 0;
                var log    = State.VmComm.RX;

                foreach (var i in Enumerable.Range(0, SampleCnt))
                {
                    int FoundIndex = log.IndexOf("LS_R,", 検索開始位置);
                    int 改行位置       = log.IndexOf("\r\n", FoundIndex);
                    var 取り出し1行     = log.Substring(FoundIndex, 改行位置 - FoundIndex);
                    var dataList   = 取り出し1行.Split(',');

                    listData.Add(Double.Parse(dataList[1]));
                    検索開始位置 = FoundIndex + 1;
                }
                return(listData);
            };

            //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

            try
            {
                var dialog = new DialogPic("デジタル抵抗器を20kΩに設定してください", DialogPic.NAME.その他);
                dialog.ShowDialog();

                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    var ListData = GetData();
                    if (ListData == null)
                    {
                        return false;
                    }

                    //最後から5ヶのデータをサンプリング値として取得する(前半は値が安定していない可能性があるため)
                    //15個飛ばして5個を抽出(インデックスが15から20)
                    var 安定後のデータ = ListData.Skip(15).Take(5).ToList <double>();

                    result下限 = 安定後のデータ.All(data => data >= State.TestSpec.液漏れ20k_Min);
                    result上限 = 安定後のデータ.All(data => data <= State.TestSpec.液漏れ20k_Max);
                    result = result下限 && result上限;

                    安定後のデータ.Sort();
                    if (result)
                    {
                        resultData = 安定後のデータ[安定後のデータ.Count() / 2].ToString("F2") + "kΩ";//中央値
                    }
                    else
                    {
                        if (!result下限)
                        {
                            resultData = 安定後のデータ[0].ToString("F2") + "kΩ";//Min
                        }
                        else
                        {
                            resultData = 安定後のデータ[安定後のデータ.Count() - 1].ToString("F2") + "kΩ";//Max
                        }
                    }

                    return result;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                State.VmTestStatus.TestLog += result? "---PASS\r\n" :"---FAIL\r\n";
                General.PowerSupply(false);
                State.VmTestResults.Res20k    = resultData;
                State.VmTestResults.ColRes20k = result ? OffBrush : NgBrush;
            }
        }
コード例 #20
0
        //メインルーチン
        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();
                }
            }
        }
コード例 #21
0
        const int numSamples = 3;//サンプリング数はここで変更する
        //※奇数で指定すること(中央値を計測結果として表示するため)

        public static async Task <bool> CheckFLW(MODE mode)
        {
            bool result1 = false;
            bool result2 = false;
            bool result3 = false;

            bool result1下限 = false;
            bool result1上限 = false;
            bool result2下限 = false;
            bool result2上限 = false;
            bool result3下限 = false;
            bool result3上限 = false;

            string Data1 = "";
            string Data2 = "";
            string Data3 = "";

            var List_Data1 = new List <double>();
            var List_Data2 = new List <double>();
            var List_Data3 = new List <double>();


            //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            bool GetData()
            {
                try
                {
                    Target.SendData("FLW");

                    while (true)//取り込んだ通信データが規定行数(サンプリング数)になるまで待つ
                    {
                        if (Flags.ClickStopButton)
                        {
                            return(false);
                        }
                        if (General.CountNewline() == numSamples + 2)
                        {
                            break;
                        }
                    }
                    Target.Escape();
                    Sleep(1500);
                    int 検索開始位置 = 0;
                    foreach (var i in Enumerable.Range(0, numSamples))
                    {
                        var log        = State.VmComm.RX;
                        int FoundIndex = log.IndexOf("FLW,", 検索開始位置);
                        int 改行位置       = log.IndexOf("\r\n", FoundIndex);
                        var 取り出し1行     = log.Substring(FoundIndex, 改行位置 - FoundIndex);
                        var dataList   = 取り出し1行.Split(',');

                        List_Data1.Add(Double.Parse(dataList[1]));
                        List_Data2.Add(Double.Parse(dataList[2]));
                        List_Data3.Add(Double.Parse(dataList[3]));
                        検索開始位置 = FoundIndex + 1;
                    }
                    return(true);
                }
                catch
                {
                    return(false);
                }
            };
            //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

            try
            {
                var mess = "";
                switch (mode)
                {
                case MODE.LEFT:
                    mess = "チェッカーのパルス入力VRを左いっぱいに回してください";
                    break;

                case MODE.MIDDLE:
                    mess = "チェッカーのパルス入力VRを真ん中にしてください";
                    break;

                case MODE.RIGHT:
                    mess = "チェッカーのパルス入力VRを右いっぱいに回してください";
                    break;
                }
                var dialog = new DialogPic(mess, DialogPic.NAME.その他);
                dialog.ShowDialog();

                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    if (!GetData())
                    {
                        return false;
                    }

                    double Min = 0;
                    double Max = 0;
                    switch (mode)//規格範囲の決定
                    {
                    case MODE.LEFT:
                        Min = State.TestSpec.Pulse_L_Min;
                        Max = State.TestSpec.Pulse_L_Max;
                        break;

                    case MODE.MIDDLE:
                        Min = State.TestSpec.Pulse_M_Min;
                        Max = State.TestSpec.Pulse_M_Max;
                        break;

                    case MODE.RIGHT:
                        Min = State.TestSpec.Pulse_R_Min;
                        Max = State.TestSpec.Pulse_R_Max;
                        break;
                    }



                    result1下限 = List_Data1.All(data => data >= Min);
                    result1上限 = List_Data1.All(data => data <= Max);
                    result1 = result1下限 && result1上限;

                    result2下限 = List_Data2.All(data => data >= Min);
                    result2上限 = List_Data2.All(data => data <= Max);
                    result2 = result2下限 && result2上限;

                    result3下限 = List_Data3.All(data => data >= Min);
                    result3上限 = List_Data3.All(data => data <= Max);
                    result3 = result3下限 && result3上限;

                    List_Data1.Sort();
                    if (result1)
                    {
                        Data1 = List_Data1[numSamples / 2].ToString("F1");//中央値
                    }
                    else
                    {
                        if (!result1下限)
                        {
                            Data1 = List_Data1[0].ToString("F1");//Min
                        }
                        else
                        {
                            Data1 = List_Data1[numSamples - 1].ToString("F1");//Max
                        }
                    }

                    List_Data2.Sort();
                    if (result2)
                    {
                        Data2 = List_Data2[numSamples / 2].ToString("F1");//中央値
                    }
                    else
                    {
                        if (!result2下限)
                        {
                            Data2 = List_Data2[0].ToString("F1");//Min
                        }
                        else
                        {
                            Data2 = List_Data2[numSamples - 1].ToString("F1");//Max
                        }
                    }

                    List_Data3.Sort();
                    if (result3)
                    {
                        Data3 = List_Data3[numSamples / 2].ToString("F1");//中央値
                    }
                    else
                    {
                        if (!result3下限)
                        {
                            Data3 = List_Data3[0].ToString("F1");//Min
                        }
                        else
                        {
                            Data3 = List_Data3[numSamples - 1].ToString("F1");//Max
                        }
                    }

                    return result1 && result2 && result3;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);

                //ビューモデルの更新
                switch (mode)
                {
                case MODE.LEFT:
                    State.VmTestResults.Pulse1L    = Data1;
                    State.VmTestResults.Pulse2L    = Data2;
                    State.VmTestResults.Pulse3L    = Data3;
                    State.VmTestResults.ColPulse1L = result1 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse2L = result2 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse3L = result3 ? OffBrush : NgBrush;
                    break;

                case MODE.MIDDLE:
                    State.VmTestResults.Pulse1M    = Data1;
                    State.VmTestResults.Pulse2M    = Data2;
                    State.VmTestResults.Pulse3M    = Data3;
                    State.VmTestResults.ColPulse1M = result1 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse2M = result2 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse3M = result3 ? OffBrush : NgBrush;
                    break;

                case MODE.RIGHT:
                    State.VmTestResults.Pulse1R    = Data1;
                    State.VmTestResults.Pulse2R    = Data2;
                    State.VmTestResults.Pulse3R    = Data3;
                    State.VmTestResults.ColPulse1R = result1 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse2R = result2 ? OffBrush : NgBrush;
                    State.VmTestResults.ColPulse3R = result3 ? OffBrush : NgBrush;
                    break;
                }
            }
        }
コード例 #22
0
        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;
                }
            }
        }
コード例 #23
0
        public static async Task <bool> CheckPWTMP_A(DV_CH ch)
        {
            bool result0   = false;
            bool result150 = false;
            bool result300 = false;

            string Data0   = "";
            string Data150 = "";
            string Data300 = "";



            try
            {
                return(await Task <bool> .Run(() =>
                {
                    switch (ch)
                    {
                    case DV_CH.DV9:
                        General.Set7012Meas(General.MEAS_CH.DV9);
                        break;

                    case DV_CH.DV11:
                        General.Set7012Meas(General.MEAS_CH.DV11);
                        break;
                    }

                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("PWTMP_A 0 0");
                    Sleep(2500);
                    HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData * 10;

                    Target.SendData("PWTMP_A 150 150");
                    Sleep(2500);
                    HIOKI7012.MeasureDcV(); var Meas150 = HIOKI7012.VoltData * 10;

                    Target.SendData("PWTMP_A 300 300");
                    Sleep(2500);
                    HIOKI7012.MeasureDcV(); var Meas300 = HIOKI7012.VoltData * 10;

                    result0 = (State.TestSpec.Temp_A_0_Min <= Meas0 && Meas0 <= State.TestSpec.Temp_A_0_Max);
                    result150 = (State.TestSpec.Temp_A_150_Min <= Meas150 && Meas150 <= State.TestSpec.Temp_A_150_Max);
                    result300 = (State.TestSpec.Temp_A_300_Min <= Meas300 && Meas300 <= State.TestSpec.Temp_A_300_Max);

                    Data0 = Meas0.ToString("F2") + "mA";
                    Data150 = Meas150.ToString("F2") + "mA";
                    Data300 = Meas300.ToString("F2") + "mA";

                    return result0 && result150 && result300;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
                switch (ch)
                {
                case DV_CH.DV9:
                    State.VmTestResults.DV9_0      = Data0;
                    State.VmTestResults.DV9_150    = Data150;
                    State.VmTestResults.DV9_300    = Data300;
                    State.VmTestResults.ColDV9_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV9_150 = result150 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV9_300 = result300 ? OffBrush : NgBrush;
                    break;

                case DV_CH.DV11:
                    State.VmTestResults.DV11_0      = Data0;
                    State.VmTestResults.DV11_150    = Data150;
                    State.VmTestResults.DV11_300    = Data300;
                    State.VmTestResults.ColDV11_0   = result0 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV11_150 = result150 ? OffBrush : NgBrush;
                    State.VmTestResults.ColDV11_300 = result300 ? OffBrush : NgBrush;
                    break;
                }
            }
        }
コード例 #24
0
        public static async Task <bool> SetLeak()
        {
            bool   result調整点 = false;
            string Data調整点   = "";
            string Data調整点再  = "";

            State.VmTestStatus.TestLog += " 80kΩ調整";


            //ローカル関数の定義■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            string GetData()
            {
                Target.SendData("LS11");

                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("LS11,");
                int 改行位置       = log.IndexOf("\r\n", FoundIndex);
                var 取り出し1行     = log.Substring(FoundIndex, 改行位置 - FoundIndex);
                var dataList   = 取り出し1行.Split(',');

                return(dataList[2].Substring(1));//一文字目がスペースなので削除
            };

            string GetData再()
            {
                Target.SendData("LSR");

                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("LSR,");
                int 改行位置       = log.IndexOf("\r\n", FoundIndex);
                var 取り出し1行     = log.Substring(FoundIndex, 改行位置 - FoundIndex);
                var dataList   = 取り出し1行.Split(',');

                return(dataList[1].Substring(1)); //一文字目がスペースなので削除
            };
            //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

            try
            {
                var mess = "①チェッカーの終端抵抗切替 内部/外部スイッチを上向きにする\r\n" +
                           "②チェッカーの漏液センサ(2線)端子とデジタル抵抗器を接続する\r\n" +
                           "③デジタル抵抗器を80kΩに設定する";
                var dialog = new DialogPic(mess, DialogPic.NAME.その他);
                dialog.ShowDialog();
                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Data調整点 = GetData();
                    if (Data調整点 == null)
                    {
                        return false;
                    }
                    Sleep(500);

                    General.PowerSupply(false);
                    Sleep(1000);

                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Data調整点再 = GetData再();
                    if (Data調整点再 == null)
                    {
                        return false;
                    }

                    result調整点 = Data調整点 == Data調整点再;

                    return result調整点;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                State.VmTestStatus.TestLog += result調整点? "---PASS\r\n" :"---FAIL\r\n";
                General.PowerSupply(false);

                State.VmTestResults.Res80k      = Data調整点 + "h";
                State.VmTestResults.Res80kRE    = Data調整点再 + "h";
                State.VmTestResults.ColRes80k   = result調整点 ? OffBrush : NgBrush;
                State.VmTestResults.ColRes80kRE = result調整点 ? OffBrush : NgBrush;
            }
        }
コード例 #25
0
        public static async Task <bool> CheckPWINV()
        {
            bool result0    = false;
            bool result1800 = false;
            bool result3600 = false;

            string Data0    = "";
            string Data1800 = "";
            string Data3600 = "";



            try
            {
                return(await Task <bool> .Run(() =>
                {
                    General.Set7012Meas(General.MEAS_CH.DV13);

                    //電源ONする処理
                    General.PowerSupply(true);
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("PWINV 0");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas0 = HIOKI7012.VoltData;

                    Target.SendData("PWINV 1800");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas1800 = HIOKI7012.VoltData;

                    Target.SendData("PWINV 3600");
                    Sleep(1500);
                    HIOKI7012.MeasureDcV(); var Meas3600 = HIOKI7012.VoltData;

                    result0 = (State.TestSpec.Inv_0_Min <= Meas0 && Meas0 <= State.TestSpec.Inv_0_Max);
                    result1800 = (State.TestSpec.Inv_1800_Min <= Meas1800 && Meas1800 <= State.TestSpec.Inv_1800_Max);
                    result3600 = (State.TestSpec.Inv_3600_Min <= Meas3600 && Meas3600 <= State.TestSpec.Inv_3600_Max);

                    Data0 = Meas0.ToString("F2") + "V";
                    Data1800 = Meas1800.ToString("F2") + "V";
                    Data3600 = Meas3600.ToString("F2") + "V";

                    return result0 && result1800 && result3600;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
                State.VmTestResults.DV13_0       = Data0;
                State.VmTestResults.DV13_1800    = Data1800;
                State.VmTestResults.DV13_3600    = Data3600;
                State.VmTestResults.ColDV13_0    = result0 ? OffBrush : NgBrush;
                State.VmTestResults.ColDV13_1800 = result1800 ? OffBrush : NgBrush;
                State.VmTestResults.ColDV13_3600 = result3600 ? OffBrush : NgBrush;
            }
        }
コード例 #26
0
        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;
                }
            }
        }
コード例 #27
0
        public static async Task <bool> CheckOUTP()
        {
            try
            {
                var re = await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    return(General.CheckDemo表示());
                });

                if (!re)
                {
                    return(false);
                }

                Target.SendData("OUTP_ON");
                var dialog = new Dialog出力回路(MODE.OUTP_ON);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }


                Target.SendData("OUTP_OFF");
                dialog = new Dialog出力回路(MODE.OUTP_OFF1);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                await Task.Delay(1000);

                dialog = new Dialog出力回路(MODE.OUTP_OFF2);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }


                General.PowerSupply(false);
                await Task.Delay(500);

                General.PowerSupply(true);

                dialog = new Dialog出力回路(MODE.INTERLOCK1);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                dialog = new Dialog出力回路(MODE.INTERLOCK2);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                dialog = new Dialog出力回路(MODE.INTERLOCK3);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                var dialog2 = new DialogPic("チェッカーの外部非常停止SWを下向きにしてください", DialogPic.NAME.その他);
                dialog2.ShowDialog();
                return(true);
            }
            catch
            {
                return(false);
            }
            finally
            {
                General.PowerSupply(false);
            }
        }
コード例 #28
0
        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;
                }
            }
        }
コード例 #29
0
        public static async Task <bool> CheckDisconnection()
        {
            var dialog = new DialogPic("6ダイヤル抵抗器を150オームくらいに設定してね\r\n少数点以下は適当でOKだよ", DialogPic.NAME.その他);

            dialog.ShowDialog();
            General.PowerSupply(true);

            dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他);
            dialog.ShowDialog();
            if (!Flags.DialogReturn)
            {
                return(false);
            }

            await Task.Delay(1500);

            General.SetCn10to6ダイヤル抵抗Bのみ();

            dialog = new DialogPic("チェッカーの温度警報LEDが点灯しましたか??", DialogPic.NAME.その他);
            dialog.ShowDialog();
            if (!Flags.DialogReturn)
            {
                return(false);
            }


            General.SetCn10to6ダイヤル抵抗();
            General.PowerSupply(false);
            await Task.Delay(1500);

            General.PowerSupply(true);

            dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他);
            dialog.ShowDialog();
            if (!Flags.DialogReturn)
            {
                return(false);
            }

            await Task.Delay(1500);

            General.SetCn10to6ダイヤル抵抗Aのみ();

            dialog = new DialogPic("チェッカーの温度警報LEDが点灯しましたか??", DialogPic.NAME.その他);
            dialog.ShowDialog();
            if (!Flags.DialogReturn)
            {
                return(false);
            }

            General.SetCn10to6ダイヤル抵抗();
            General.PowerSupply(false);
            await Task.Delay(1500);

            General.PowerSupply(true);

            dialog = new DialogPic("チェッカーの温度警報LEDは消えていますか??", DialogPic.NAME.その他);
            dialog.ShowDialog();
            if (!Flags.DialogReturn)
            {
                return(false);
            }


            General.PowerSupply(false);
            //General.SetCn10toChecker();
            General.SetCn10to6ダイヤル抵抗();
            //MessageBox.Show("①製品のCN10に専用抵抗器(123.24Ω)を接続してください");

            return(true);
        }
コード例 #30
0
        public static async Task <bool> CheckANA2_P(MODE mode)
        {
            List <bool>   ListResult = new List <bool>();
            List <string> ListData   = new List <string>();
            const int     numSamples = 5;//サンプリング数はここで変更する

            bool resultAna12 = false;
            bool resultAna13 = false;
            bool resultAna14 = false;
            bool resultAna15 = false;
            bool resultAna17 = false;
            bool resultAna23 = false;
            bool resultAna24 = false;
            bool resultAna25 = false;
            bool resultAna26 = false;
            bool resultAna27 = false;

            string Ana12Data = "";
            string Ana13Data = "";
            string Ana14Data = "";
            string Ana15Data = "";
            string Ana17Data = "";
            string Ana23Data = "";
            string Ana24Data = "";
            string Ana25Data = "";
            string Ana26Data = "";
            string Ana27Data = "";

            var List_ANA12 = new List <double>();
            var List_ANA13 = new List <double>();
            var List_ANA14 = new List <double>();
            var List_ANA15 = new List <double>();
            var List_ANA17 = new List <double>();
            var List_ANA23 = new List <double>();
            var List_ANA24 = new List <double>();
            var List_ANA25 = new List <double>();
            var List_ANA26 = new List <double>();
            var List_ANA27 = new List <double>();

            try
            {
                var dialog = new DialogPic(mode == MODE.OFF ? "①青枠のスイッチをすべてOFF(↓)する\r\n②製品SW1の1-5をOFF(↓)する\r\n③表示基板のSW11の2番をOFF(↓)する" :
                                           "①青枠のスイッチをすべてON(↑)する\r\n②製品SW1の1-5をON(↑)する\r\n③表示基板のSW11の2番をON(↑)する",
                                           DialogPic.NAME.その他);
                dialog.ShowDialog();
                if (!Flags.DialogReturn)
                {
                    return(false);
                }

                return(await Task <bool> .Run(() =>
                {
                    //電源ONする処理
                    General.PowerSupply(true);
                    //デモ画面確認
                    if (!General.CheckDemo表示())
                    {
                        return false;
                    }

                    Target.SendData("ANA2_P");

                    while (true)//取り込んだ通信データが7行以上になるまで待つ
                    {
                        if (Flags.ClickStopButton)
                        {
                            return false;
                        }
                        if (General.CountNewline() > numSamples + 2)
                        {
                            break;
                        }
                    }
                    Target.Escape();
                    int 検索開始位置 = 0;
                    foreach (var i in Enumerable.Range(0, numSamples))
                    {
                        var log = VmComm.RX;
                        int FoundIndex = log.IndexOf("ANA2_P,", 検索開始位置);
                        List_ANA12.Add(Double.Parse(log.Substring(FoundIndex + 8, 5)));
                        List_ANA13.Add(Double.Parse(log.Substring(FoundIndex + 15, 5)));
                        List_ANA14.Add(Double.Parse(log.Substring(FoundIndex + 22, 5)));
                        List_ANA15.Add(Double.Parse(log.Substring(FoundIndex + 29, 5)));
                        List_ANA17.Add(Double.Parse(log.Substring(FoundIndex + 43, 5)));
                        List_ANA23.Add(Double.Parse(log.Substring(FoundIndex + 50, 5)));
                        List_ANA24.Add(Double.Parse(log.Substring(FoundIndex + 57, 5)));
                        List_ANA25.Add(Double.Parse(log.Substring(FoundIndex + 64, 5)));
                        List_ANA26.Add(Double.Parse(log.Substring(FoundIndex + 71, 5)));
                        List_ANA27.Add(Double.Parse(log.Substring(FoundIndex + 78, 5)));
                        検索開始位置 = FoundIndex + 1;
                    }
                    if (mode == MODE.OFF)
                    {
                        resultAna12 = List_ANA12.Max() <= State.TestSpec.Ana12_15_1;
                        resultAna13 = List_ANA13.Max() <= State.TestSpec.Ana12_15_1;
                        resultAna14 = List_ANA14.Max() <= State.TestSpec.Ana12_15_1;
                        resultAna15 = List_ANA15.Max() <= State.TestSpec.Ana12_15_1;
                        resultAna17 = List_ANA17.Min() >= State.TestSpec.Ana17_27_1;
                        resultAna23 = List_ANA23.Min() >= State.TestSpec.Ana17_27_1;
                        resultAna24 = List_ANA24.Min() >= State.TestSpec.Ana17_27_1;
                        resultAna25 = List_ANA25.Min() >= State.TestSpec.Ana17_27_1;
                        resultAna26 = List_ANA26.Min() >= State.TestSpec.Ana17_27_1;
                        resultAna27 = List_ANA27.Min() >= State.TestSpec.Ana17_27_1;

                        Ana12Data = List_ANA12.Max().ToString("F3");
                        Ana13Data = List_ANA13.Max().ToString("F3");
                        Ana14Data = List_ANA14.Max().ToString("F3");
                        Ana15Data = List_ANA15.Max().ToString("F3");
                        Ana17Data = List_ANA17.Min().ToString("F3");
                        Ana23Data = List_ANA23.Min().ToString("F3");
                        Ana24Data = List_ANA24.Min().ToString("F3");
                        Ana25Data = List_ANA25.Min().ToString("F3");
                        Ana26Data = List_ANA26.Min().ToString("F3");
                        Ana27Data = List_ANA27.Min().ToString("F3");
                    }
                    else
                    {
                        resultAna12 = List_ANA12.Min() >= State.TestSpec.Ana12_15_2;
                        resultAna13 = List_ANA13.Min() >= State.TestSpec.Ana12_15_2;
                        resultAna14 = List_ANA14.Min() >= State.TestSpec.Ana12_15_2;
                        resultAna15 = List_ANA15.Min() >= State.TestSpec.Ana12_15_2;
                        resultAna17 = List_ANA17.Max() <= State.TestSpec.Ana17_27_2;
                        resultAna23 = List_ANA23.Max() <= State.TestSpec.Ana17_27_2;
                        resultAna24 = List_ANA24.Max() <= State.TestSpec.Ana17_27_2;
                        resultAna25 = List_ANA25.Max() <= State.TestSpec.Ana17_27_2;
                        resultAna26 = List_ANA26.Max() <= State.TestSpec.Ana17_27_2;
                        resultAna27 = List_ANA27.Max() <= State.TestSpec.Ana17_27_2;
                        Ana12Data = List_ANA12.Min().ToString("F3");
                        Ana13Data = List_ANA13.Min().ToString("F3");
                        Ana14Data = List_ANA14.Min().ToString("F3");
                        Ana15Data = List_ANA15.Min().ToString("F3");
                        Ana17Data = List_ANA17.Max().ToString("F3");
                        Ana23Data = List_ANA23.Max().ToString("F3");
                        Ana24Data = List_ANA24.Max().ToString("F3");
                        Ana25Data = List_ANA25.Max().ToString("F3");
                        Ana26Data = List_ANA26.Max().ToString("F3");
                        Ana27Data = List_ANA27.Max().ToString("F3");
                    }

                    return resultAna12 && resultAna13 && resultAna14 && resultAna15 &&
                    resultAna17 && resultAna23 && resultAna24 && resultAna25 && resultAna26 && resultAna27;
                }));
            }
            catch
            {
                return(false);
            }
            finally
            {
                //
                if (mode == MODE.OFF)
                {
                    VmTestResults.ANA12_1    = Ana12Data;
                    VmTestResults.ANA13_1    = Ana13Data;
                    VmTestResults.ANA14_1    = Ana14Data;
                    VmTestResults.ANA15_1    = Ana15Data;
                    VmTestResults.ANA17_1    = Ana17Data;
                    VmTestResults.ANA23_1    = Ana23Data;
                    VmTestResults.ANA24_1    = Ana24Data;
                    VmTestResults.ANA25_1    = Ana25Data;
                    VmTestResults.ANA26_1    = Ana26Data;
                    VmTestResults.ANA27_1    = Ana27Data;
                    VmTestResults.ColANA12_1 = resultAna12 ? OffBrush : NgBrush;
                    VmTestResults.ColANA13_1 = resultAna13 ? OffBrush : NgBrush;
                    VmTestResults.ColANA14_1 = resultAna14 ? OffBrush : NgBrush;
                    VmTestResults.ColANA15_1 = resultAna15 ? OffBrush : NgBrush;
                    VmTestResults.ColANA17_1 = resultAna17 ? OffBrush : NgBrush;
                    VmTestResults.ColANA23_1 = resultAna23 ? OffBrush : NgBrush;
                    VmTestResults.ColANA24_1 = resultAna24 ? OffBrush : NgBrush;
                    VmTestResults.ColANA25_1 = resultAna25 ? OffBrush : NgBrush;
                    VmTestResults.ColANA26_1 = resultAna26 ? OffBrush : NgBrush;
                    VmTestResults.ColANA27_1 = resultAna27 ? OffBrush : NgBrush;
                }
                else
                {
                    VmTestResults.ANA12_2    = Ana12Data;
                    VmTestResults.ANA13_2    = Ana13Data;
                    VmTestResults.ANA14_2    = Ana14Data;
                    VmTestResults.ANA15_2    = Ana15Data;
                    VmTestResults.ANA17_2    = Ana17Data;
                    VmTestResults.ANA23_2    = Ana23Data;
                    VmTestResults.ANA24_2    = Ana24Data;
                    VmTestResults.ANA25_2    = Ana25Data;
                    VmTestResults.ANA26_2    = Ana26Data;
                    VmTestResults.ANA27_2    = Ana27Data;
                    VmTestResults.ColANA12_2 = resultAna12 ? OffBrush : NgBrush;
                    VmTestResults.ColANA13_2 = resultAna13 ? OffBrush : NgBrush;
                    VmTestResults.ColANA14_2 = resultAna14 ? OffBrush : NgBrush;
                    VmTestResults.ColANA15_2 = resultAna15 ? OffBrush : NgBrush;
                    VmTestResults.ColANA17_2 = resultAna17 ? OffBrush : NgBrush;
                    VmTestResults.ColANA23_2 = resultAna23 ? OffBrush : NgBrush;
                    VmTestResults.ColANA24_2 = resultAna24 ? OffBrush : NgBrush;
                    VmTestResults.ColANA25_2 = resultAna25 ? OffBrush : NgBrush;
                    VmTestResults.ColANA26_2 = resultAna26 ? OffBrush : NgBrush;
                    VmTestResults.ColANA27_2 = resultAna27 ? OffBrush : NgBrush;
                }
                General.PowerSupply(false);

                if (mode == MODE.ON)
                {
                    var dialog = new DialogPic("①青枠のスイッチをすべてOFF(↓)する\r\n②製品SW1の1-5をOFF(↓)する\r\n③表示基板のSW11の2番をOFF(↓)する", DialogPic.NAME.その他);
                    dialog.ShowDialog();
                    await Task.Delay(300);
                }
            }
        }