Esempio n. 1
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;
                }
            }
        }
Esempio n. 2
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;
                }
            }
        }
 public static ShotTypeProbabilities GetProbabilities(NAME name)
 {
     return(ScriptableObjectHelper.GetShotTypeProbabilitiesWithId(name.ToString()));
 }