Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static ResultGridItem FromTestItemInfo(TestItemInfo item)
        {
            ResultGridItem result = new ResultGridItem();

            result.ItemName     = item.ItemName;
            result.UnitType     = item.UnitType;
            result.ItemUnit     = item.ItemUnit;
            result.LowerLimit   = item.LowerValue;
            result.UpperLimit   = item.UpperValue;
            result.SerialNumber = myGlobal.dutSerialNumber;

            return(result);
        }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="Item"></param>
 /// <returns></returns>
 public static bool connect_Multimeter(ref ResultGridItem Item)
 {
     try {
         if (myGlobal.meterDevice == null)
         {
             myGlobal.meterDevice = new Multimeter();
         }
         if (myGlobal.meterDevice.IsConnected == false)
         {
             int r = myGlobal.meterDevice.LoadLibrary(myGlobal.multimeterInfo.DLLFile, InstrumentType.Meter);
             if (r == 0)
             {
                 int kq = _openDevice(myGlobal.meterDevice, myGlobal.multimeterInfo);
                 if (kq == 0)
                 {
                     if (myGlobal.meterDevice.IsConnected == false)
                     {
                         Item.ItemMessage = "can't connect to multimeter";
                         return(false);
                     }
                     else
                     {
                         return(true);
                     }
                 }
                 else
                 {
                     Item.ItemMessage = "can't open multimeter";
                     return(false);
                 }
             }
             else
             {
                 Item.ItemMessage = "can't load file dll multimeter";
                 return(false);
             }
         }
         else
         {
             return(true);
         }
     }
     catch (Exception ex) {
         Item.ItemMessage = ex.Message;
         return(false);
     }
 }
Beispiel #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="Item"></param>
 /// <returns></returns>
 public static bool connect_Switch_Card(ref ResultGridItem Item)
 {
     try {
         if (myGlobal.switchDevice == null)
         {
             myGlobal.switchDevice = new SwitchCard();
         }
         if (myGlobal.switchDevice.IsConnected == false)
         {
             int r = myGlobal.switchDevice.LoadLibrary(myGlobal.switchcardInfo.DLLFile, InstrumentType.Switcher);
             if (r == 0)
             {
                 int kq = _openDevice(myGlobal.switchDevice, myGlobal.switchcardInfo);
                 if (kq == 0)
                 {
                     if (myGlobal.switchDevice.IsConnected == false)
                     {
                         Item.ItemMessage = "can't connect to switch card";
                         return(false);
                     }
                     else
                     {
                         return(true);
                     }
                 }
                 else
                 {
                     Item.ItemMessage = "can't open switch card";
                     return(false);
                 }
             }
             else
             {
                 Item.ItemMessage = "can't load file dll switch card";
                 return(false);
             }
         }
         else
         {
             return(true);
         }
     }
     catch (Exception ex) {
         Item.ItemMessage = ex.Message;
         return(false);
     }
 }
Beispiel #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="Item"></param>
 /// <returns></returns>
 public static bool connect_Power_Supply(ref ResultGridItem Item)
 {
     try {
         if (myGlobal.powerDevice == null)
         {
             myGlobal.powerDevice = new PowerSupply();
         }
         if (myGlobal.powerDevice.IsConnected == false)
         {
             int r = myGlobal.powerDevice.LoadLibrary(myGlobal.powersupplyInfo.DLLFile, InstrumentType.Power);
             if (r == 0)
             {
                 int kq = _openDevice(myGlobal.powerDevice, myGlobal.powersupplyInfo);
                 if (kq == 0)
                 {
                     if (myGlobal.powerDevice.IsConnected == false)
                     {
                         Item.ItemMessage = "can't connect to power supply";
                         return(false);
                     }
                     else
                     {
                         return(config_Power_Supply(ref Item));
                     }
                 }
                 else
                 {
                     Item.ItemMessage = "can't open power supply";
                     return(false);
                 }
             }
             else
             {
                 Item.ItemMessage = "can't load file dll power supply";
                 return(false);
             }
         }
         else
         {
             return(true);
         }
     }
     catch (Exception ex) {
         Item.ItemMessage = ex.Message;
         return(false);
     }
 }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Item"></param>
        /// <returns></returns>
        public static bool set_Power_Supply_OFF(ref ResultGridItem Item)
        {
            try {
                int r = myGlobal.powerDevice.set_Output_State(false);

                if (r == 0)
                {
                    myGlobal.powerDevice_Output_State = false;
                    return(true);
                }
                else
                {
                    Item.ItemMessage = "Can't off power supply";
                    return(false);
                }
            }
            catch (Exception ex) {
                Item.ItemMessage = ex.Message;
                return(false);
            }
        }
Beispiel #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Item"></param>
        /// <param name="info"></param>
        /// <returns></returns>
        public static bool config_Switch_Card(ref ResultGridItem Item, TestItemInfo info)
        {
            try {
                int s = 0;

                //close specified channel and com in bank1
                //--------------------
                //s += myGlobal.switchDevice.Set_Bank_Open(1);
                //s += myGlobal.switchDevice.Set_Channel_Close(1, int.Parse(info.Bank1));

                //close specified channel and com in bank2
                //--------------------
                //s += myGlobal.switchDevice.Set_Bank_Open(2);
                //s += myGlobal.switchDevice.Set_Channel_Close(2, int.Parse(info.Bank2));


                //close specified channel and com in Bank1 && Bank2
                //--------------------
                s = myGlobal.switchDevice.Set_Channel_Close(1, int.Parse(info.Bank1), int.Parse(info.Bank2));


                if (s == 0)
                {
                    return(true);
                }
                else
                {
                    Item.ItemMessage = "Can't ON/OFF switch card";
                    return(false);
                }
            }
            catch (Exception ex) {
                Item.ItemMessage = ex.Message;
                return(false);
            }
        }
Beispiel #7
0
        public static int Validating(TestItemInfo itemtest)
        {
            int count = 0;

REP:
            Stopwatch st = new Stopwatch();
            int    err   = 0;
            double value = double.MinValue;
            bool   kq    = false;

            itemtest.ItemResult = "wait";
            ResultGridItem resultItem = Base.FromTestItemInfo(itemtest);

            st.Start();

            count++;
            try {
                myGlobal.debugLog.SystemLog += string.Format("~ try time is {0}/{1}\r\n", count, itemtest.RetryTime);
                //0. kiểm tra thông tin cài đặt item test

                //.............1. kiểm tra kết nối tới máy đo...............................//
                //Switch card
                kq = connect_Switch_Card(ref resultItem);
                myGlobal.debugLog.SystemLog += string.Format("~ check connection to switch card ... {0}\r\n", kq == true ? "Connected" : "Disconnected");
                if (!kq)
                {
                    err = -1; goto END;
                }

                //multimeter
                kq = connect_Multimeter(ref resultItem);
                myGlobal.debugLog.SystemLog += string.Format("~ check connection to multimeter ... {0}\r\n", kq == true ? "Connected" : "Disconnected");
                if (!kq)
                {
                    err = -1; goto END;
                }

                //power supply
                if (myGlobal.settingInfo.EnablePower.ToLower().Contains("yes"))
                {
                    kq = connect_Power_Supply(ref resultItem);
                    myGlobal.debugLog.SystemLog += string.Format("~ check connection to power supply ... {0}\r\n", kq == true ? "Connected" : "Disconnected");
                    if (!kq)
                    {
                        err = -1; goto END;
                    }
                }

                //..............2. cấu hình máy đo...........................................//
                if (itemtest.IsPower.ToLower().Contains("true"))
                {
                    kq = config_Switch_Card(ref resultItem, itemtest);
                    myGlobal.debugLog.SystemLog += string.Format("~ config close channel switch card ... {0}\r\n", kq == true ? "PASS" : "FAIL");
                    if (!kq)
                    {
                        err = 2; goto END;
                    }

                    if (myGlobal.settingInfo.EnablePower.ToLower().Contains("yes"))
                    {
                        //output power supply
                        if (!myGlobal.powerDevice_Output_State)
                        {
                            kq = set_Power_Supply_ON(ref resultItem);
                            myGlobal.debugLog.SystemLog += string.Format("~ set power supply output ... {0}\r\n", kq == true ? "PASS" : "FAIL");
                            if (!kq)
                            {
                                err = 4; goto END;
                            }
                        }
                    }
                }
                else
                {
                    if (myGlobal.settingInfo.EnablePower.ToLower().Contains("yes"))
                    {
                        //off power supply
                        if (myGlobal.powerDevice_Output_State)
                        {
                            kq = set_Power_Supply_OFF(ref resultItem);
                            myGlobal.debugLog.SystemLog += string.Format("~ set power supply off ... {0}\r\n", kq == true ? "PASS" : "FAIL");
                            if (!kq)
                            {
                                err = 4; goto END;
                            }
                        }
                    }
                    kq = config_Switch_Card(ref resultItem, itemtest);
                    myGlobal.debugLog.SystemLog += string.Format("~ config close channel switch card ... {0}\r\n", kq == true ? "PASS" : "FAIL");
                    if (!kq)
                    {
                        err = 2; goto END;
                    }
                }

                //3. wait contact relay stable
                myGlobal.debugLog.SystemLog += string.Format("~ wait switch card contact relay stable {0} ms\r\n", myGlobal.switchcardInfo.StableTime);
                if (myGlobal.switchcardInfo.StableTime > 0)
                {
                    Thread.Sleep(myGlobal.switchcardInfo.StableTime);
                }

                ////4. get limit
                double ll = double.TryParse(itemtest.LowerValue, out ll) == true ? ll : 0;
                double ul = double.TryParse(itemtest.UpperValue, out ul) == true ? (ul == -1 ? double.MaxValue : ul) : double.MaxValue;

                ll = ll != double.MaxValue && ll != double.MinValue ? ll * Base.UnitTypeToDouble(itemtest.UnitType) : ll;
                ul = ul != double.MaxValue && ul != double.MinValue ? ul * Base.UnitTypeToDouble(itemtest.UnitType) : ul;


                //5. Đo và lấy dữ liệu kết quả từ máy đo
                int    r        = int.MinValue;
                string mrange   = Base.RangeToMultimeterRange(itemtest.ItemUnit, itemtest.Range);
                int    wait     = int.Parse(itemtest.WaitTime);
                int    meastime = int.Parse(itemtest.MeasureTime);

                switch (itemtest.ItemUnit)
                {
                case "R": { r = myGlobal.meterDevice.get_TwoWire_Resistance_Value(meastime, wait, mrange, out value); break; }                //Resistance 2 wires

                case "D": { r = myGlobal.meterDevice.get_Diode_Value(meastime, wait, mrange, out value); break; }                             //Diode

                case "V": { r = myGlobal.meterDevice.get_DC_Voltage_Value(meastime, wait, mrange, out value); break; }                        //DC Voltage

                case "A": { value = double.TryParse(myGlobal.powerDevice.get_Current_Actual_Value(), out value) == true ? value : 0; break; } //DC Current

                case "Co": { r = myGlobal.meterDevice.get_Continuity_Value(meastime, wait, mrange, out value); break; }                       //Continuity

                case "Ca": { r = myGlobal.meterDevice.get_Capacitance_Value(meastime, wait, mrange, out value); break; }                      //Capacitance

                case "L": { r = myGlobal.meterDevice.get_TwoWire_Resistance_Value(meastime, wait, mrange, out value); break; }                //

                case "Vac": { r = myGlobal.meterDevice.get_AC_Voltage_Value(meastime, wait, mrange, out value); break; }                      //AC voltage

                case "Aac": { r = myGlobal.meterDevice.get_AC_Current_Value(meastime, wait, mrange, out value); break; }                      //AC current

                case "Freq": { r = myGlobal.meterDevice.get_Frequency_Voltage_Value(meastime, wait, mrange, out value); break; }              //Frequency

                case "R4": { r = myGlobal.meterDevice.get_FourWire_Resistance_Value(meastime, wait, mrange, out value); break; }              //Resistance 4 wires

                default: break;
                }
                myGlobal.debugLog.SystemLog += string.Format("~ get measured value from multimeter ... {0}\r\n", r == 0 ? "PASS" : "FAIL");

                if (r != 0)
                {
                    resultItem.ItemMessage = "Can't get measured value from multimeter";
                    err = 3;
                    goto END;
                }

                //6. Phán định pass/fail
                resultItem.NumValue = value.ToString();

                myGlobal.debugLog.SystemLog += string.Format("~ Measured value ... {0}\r\n", value);
                myGlobal.debugLog.SystemLog += string.Format("~ Lower limit ... {0}\r\n", ll);
                myGlobal.debugLog.SystemLog += string.Format("~ Upper limit ... {0}\r\n", ul);


                if (value < ll || value > ul)
                {
                    resultItem.ItemMessage = itemtest.ErrorMessage;
                    err = 1;
                    goto END;
                }
                else
                {
                    resultItem.ItemMessage = itemtest.GoodMessage;
                    err = 0;
                }
            }

            catch (Exception ex) {
                resultItem.ItemMessage = ex.Message;
                err = -1; //Lỗi tham số cài đặt
                goto END;
            }


            //Hiển thị kết quả đo
END:
            st.Stop();
            resultItem.TestTime = st.ElapsedMilliseconds.ToString();

            myGlobal.debugLog.SystemLog += string.Format("~ Result = {0}\r\n", err == 0 ? "PASS" : "FAIL");
            resultItem.ItemResult        = itemtest.ItemResult = err == 0 ? "passed" : "failed";
            resultItem.ErrorCode         = err.ToString();
            if (err != 0 && int.Parse(itemtest.RetryTime) > 1)
            {
                resultItem.RetryTime = count.ToString();
            }
            else
            {
                if (count > 1)
                {
                    resultItem.RetryTime = count.ToString();
                }
            }

            App.Current.Dispatcher.Invoke(new Action(() => { myGlobal.resultGridItems.Add(resultItem); }));

            if (count < int.Parse(itemtest.RetryTime) && err != 0)
            {
                goto REP;
            }
            else
            {
                return(err);
            }
        }
Beispiel #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Item"></param>
        /// <returns></returns>
        public static bool config_Power_Supply(ref ResultGridItem Item)
        {
            try {
                int r = 0;

                //preset
                r += myGlobal.powerDevice.Preset();
                Thread.Sleep(1000);

                //set volt range
                r += myGlobal.powerDevice.set_Voltage_Range(double.Parse(myGlobal.powersupplyInfo.OutVoltage));
                Thread.Sleep(1000);

                //set output value
                r += myGlobal.powerDevice.set_Output_Value(double.Parse(myGlobal.powersupplyInfo.OutVoltage), double.Parse(myGlobal.powersupplyInfo.OutCurrent));
                Thread.Sleep(500);

                //set protect value
                r += myGlobal.powerDevice.set_Current_Protection_Level(double.Parse(myGlobal.powersupplyInfo.OverCurrent));
                Thread.Sleep(500);

                r += myGlobal.powerDevice.set_Voltage_Protection_Level(double.Parse(myGlobal.powersupplyInfo.OverVoltage));
                Thread.Sleep(500);

                //set protect flag
                r += myGlobal.powerDevice.set_Voltage_Protection_State(myGlobal.powersupplyInfo.IsProtectVolt == "True" ? true : false);
                Thread.Sleep(500);

                r += myGlobal.powerDevice.set_Current_Protection_State(myGlobal.powersupplyInfo.IsProtectCurrent == "True" ? true : false);
                Thread.Sleep(500);

                //set step
                r += myGlobal.powerDevice.set_Voltage_Step(double.Parse(myGlobal.powersupplyInfo.VoltStep));
                Thread.Sleep(500);

                r += myGlobal.powerDevice.set_Current_Step(double.Parse(myGlobal.powersupplyInfo.CurrentStep));
                Thread.Sleep(500);

                //set trigger
                r += myGlobal.powerDevice.set_Trigger_Delay(double.Parse(myGlobal.powersupplyInfo.TriggerDelay));
                Thread.Sleep(500);

                //remote
                myGlobal.powerDevice.Remote();
                Thread.Sleep(500);

                if (r == 0)
                {
                    return(true);
                }
                else
                {
                    Item.ItemMessage = "Can't configure power supply";
                    return(false);
                }
            }
            catch (Exception ex) {
                Item.ItemMessage = ex.Message;
                return(false);
            }
        }