Beispiel #1
0
        public static int Count;//高電圧印加までの時間カウントダウン用


        //専用メソッド◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
        //**************************************************************************
        //検査スペック、作業者一覧のロード(parameter.odsファイルより読み出し)
        //引数:なし
        //戻値:bool値
        //**************************************************************************
        public static bool LoadParameter()
        {
            OpenOffice calc = new OpenOffice();

            Action <string> splashMessage = (mess) =>
            {
                if (SplashForm._form != null)
                {
                     SplashForm._form.SetLabel(mess);
                }
            };

            try
            {
                //すべての要素をクリア
                State.Parameter耐圧スペックBcr.Clear();
                State.Parameter絶縁スペックBcr.Clear();

                State.Parameter耐圧スペックQ890.Clear();
                State.Parameter絶縁スペックQ890.Clear();

                State.Parameter耐圧スペックAUR.Clear();
                State.Parameter絶縁スペックAUR.Clear();

                State.ParameterOperator.Clear();

                //parameterファイルを開く

                calc.OpenFile(Constants.ParameterFilePath);

                int i = 0;//行インデックス

                // sheetを取得
                calc.SelectSheet("SpecBcr");

                //耐電圧試験 規格値の読み出し
                splashMessage("BC-R耐電圧試験 規格値のロード・・・");
                i = 2;//3行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 耐電圧試験スペック()
                    {
                        ステップ = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1  = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2  = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3  = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4  = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5  = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6  = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7  = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8  = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter耐圧スペックBcr.Add(spec);
                    i++;
                }

                //絶縁抵抗試験 規格値の読み出し
                splashMessage("BC-R絶縁抵抗試験 規格値のロード・・・");
                i = 10;//11行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 絶縁抵抗試験スペック()
                    {
                        ステップ  = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1   = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2   = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3   = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4   = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5   = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6   = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7   = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8   = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧  = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間  = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter絶縁スペックBcr.Add(spec);
                    i++;
                }

                // sheetを取得
                calc.SelectSheet("SpecQ890");

                //耐電圧試験 規格値の読み出し
                splashMessage("Q890耐電圧試験 規格値のロード・・・");
                i = 2;//3行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 耐電圧試験スペック()
                    {
                        ステップ = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1  = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2  = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3  = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4  = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5  = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6  = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7  = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8  = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter耐圧スペックQ890.Add(spec);
                    i++;
                }

                //絶縁抵抗試験 規格値の読み出し
                splashMessage("Q890絶縁抵抗試験 規格値のロード・・・");
                i = 10;//11行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 絶縁抵抗試験スペック()
                    {
                        ステップ  = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1   = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2   = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3   = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4   = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5   = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6   = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7   = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8   = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧  = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間  = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter絶縁スペックQ890.Add(spec);
                    i++;
                }

                // sheetを取得
                calc.SelectSheet("SpecAur");

                //耐電圧試験 規格値の読み出し
                splashMessage("AUR耐電圧試験 規格値のロード・・・");
                i = 2;//3行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 耐電圧試験スペック()
                    {
                        ステップ = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1  = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2  = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3  = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4  = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5  = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6  = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7  = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8  = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter耐圧スペックAUR.Add(spec);
                    i++;
                }

                //絶縁抵抗試験 規格値の読み出し
                splashMessage("AUR絶縁抵抗試験 規格値のロード・・・");
                i = 10;//11行目から読み込む
                for (; ;)
                {
                    Application.DoEvents();
                    if (calc.sheet.getCellByPosition(0, i).getFormula() == "")
                    {
                        break;
                    }
                    var spec = new 絶縁抵抗試験スペック()
                    {
                        ステップ  = calc.sheet.getCellByPosition(0, i).getFormula(),
                        CH1   = calc.sheet.getCellByPosition(1, i).getFormula(),
                        CH2   = calc.sheet.getCellByPosition(2, i).getFormula(),
                        CH3   = calc.sheet.getCellByPosition(3, i).getFormula(),
                        CH4   = calc.sheet.getCellByPosition(4, i).getFormula(),
                        CH5   = calc.sheet.getCellByPosition(5, i).getFormula(),
                        CH6   = calc.sheet.getCellByPosition(6, i).getFormula(),
                        CH7   = calc.sheet.getCellByPosition(7, i).getFormula(),
                        CH8   = calc.sheet.getCellByPosition(8, i).getFormula(),
                        印加電圧  = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()),
                        印加時間  = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()),
                        絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula())
                    };
                    Parameter絶縁スペックAUR.Add(spec);
                    i++;
                }


                // sheetを取得 "OperatorName"
                calc.SelectSheet("OperatorName");

                //作業者一覧の読み出し
                splashMessage("作業者一覧ののロード・・・");
                i = 1;//行インデックス
                for (; ;)
                {
                    Application.DoEvents();
                    string name = calc.sheet.getCellByPosition(1, i).getFormula(); if (name == "予約" || i == 11)
                    {
                        break;
                    }
                    ParameterOperator.Add(name);
                    i++;
                }

                return(true);
            }
            catch
            {
                return(false);
            }
            finally
            {
                calc.CloseFile();
            }
        }
Beispiel #2
0
        public static bool SetFunction(絶縁抵抗試験スペック spec, int vol = 1, string コンタクトチェック = "OFF") //vol(ブザー音量)は1(Min)~3(Max)で設定すること
        {
            SendCommand("FUNCTION 2");                                                         //IR画面に設定
            if (!Query("FUN?", (data) => data == "2"))
            {
                goto 設定異常;
            }

            SendCommand("I:TES " + spec.印加電圧.ToString("F0"));  //試験電圧の設定
            if (!Query("I:TES?", (data) => Double.Parse(data) == spec.印加電圧))
            {
                goto 設定異常;
            }

            SendCommand("I:LOW " + (spec.絶縁抵抗値 * 1000000).ToString() + ",1");  //下限基準値の設定
            if (!Query("I:LOW?", (data) => {
                int i = data.IndexOf(",1");
                if (i < 0)
                {
                    return(false);
                }
                return(Double.Parse(data.Substring(0, i)) == spec.絶縁抵抗値 * 1000000);
            })
                )
            {
                goto 設定異常;
            }

            SendCommand("I:TIM " + spec.印加時間.ToString("F1") + ",1");  //試験時間の設定
            if (!Query("I:TIM?", (data) => data == spec.印加時間.ToString("F1") + ",1"))
            {
                goto 設定異常;
            }

            SendCommand("PASSHOLD HOLD");  //試験時間の設定

            SendCommand("I:SCAN 1," + spec.CH1);
            if (!Query("I:SCAN?1", (data) => data == spec.CH1))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 2," + spec.CH2);
            if (!Query("I:SCAN?2", (data) => data == spec.CH2))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 3," + spec.CH3);
            if (!Query("I:SCAN?3", (data) => data == spec.CH3))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 4," + spec.CH4);
            if (!Query("I:SCAN?4", (data) => data == spec.CH4))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 5," + spec.CH5);
            if (!Query("I:SCAN?5", (data) => data == spec.CH5))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 6," + spec.CH6);
            if (!Query("I:SCAN?6", (data) => data == spec.CH6))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 7," + spec.CH7);
            if (!Query("I:SCAN?7", (data) => data == spec.CH7))
            {
                goto 設定異常;
            }

            SendCommand("I:SCAN 8," + spec.CH8);
            if (!Query("I:SCAN?8", (data) => data == spec.CH8))
            {
                goto 設定異常;
            }

            SendCommand("I:CCH " + コンタクトチェック);

            SendCommand("DSE #HFF");//デバイスステータスイネーブルレジスタをFFに設定()プロテクション中は無効!
            if (!Query("DSE?", (data) => data == "255"))
            {
                goto 設定異常;
            }

            SendCommand("BVOL " + vol.ToString());

            return(true);

設定異常:
            ErrorMess = ErrorMessage.TOS9200設定異常;
            return(false);
        }