Esempio n. 1
0
        public List <TestItemInfo> GetTestItemInfos()
        {
            List <TestItemInfo> Items = new List <TestItemInfo>();

            StringBuilder sql_select = new StringBuilder();

            sql_select.Append("select * from sys_biz_reminder_testitem order by ID");

            DataTable Data = GetDataTable(sql_select.ToString());

            if (Data != null)
            {
                foreach (DataRow Row in Data.Rows)
                {
                    String Index       = Row["ID"].ToString();
                    String Description = Row["ItemName"].ToString();

                    TestItemInfo Info = new TestItemInfo();
                    Info.Index       = Index;
                    Info.Description = Description;
                    Items.Add(Info);
                }
            }

            return(Items);
        }
Esempio n. 2
0
 private void listBox_TestItems_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (listBox_TestItems.SelectedItem is TestItemInfo)
     {
         SelectedItem = listBox_TestItems.SelectedItem as TestItemInfo;
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 在非UI线程上执行检测
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TestBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bgWorker = sender as BackgroundWorker;

            using (PcbTesterClient client = PcbTesterClient.Create(Settings.Default.PortName, Settings.Default.BaudRate))
            {
                client.Open();
                progressValue = 0;
                List <CommandResult> commandResultsList = new List <CommandResult>();
                for (int i = 0; i < this.landing1.SelectedTestItems.Count; i++)
                {
                    TestItemInfo testItem = this.landing1.SelectedTestItems[i];

                    bgWorker.ReportProgress(i);
                    progressValue = i;
                    var testResult = CommandEngine.Instance.Excute(client, testItem);
                    commandResultsList.Add(testResult);
                    bgWorker.ReportProgress(i, testResult);

                    //在操作的过程中需要检查用户是否取消了当前的操作。
                    if (bgWorker.CancellationPending == true)
                    {
                        e.Cancel = true;
                        break;
                    }
                }
                e.Result = commandResultsList;
            }
        }
Esempio n. 4
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);
        }
Esempio n. 5
0
        // to trigger event when item starts
        public void ItemStarted(object sender, ItemStartEventArgs e)
        {
            try
            {
                if (false == e.ExecutionID.Equals(this.ExecutionID))
                {
                    throw new Exception(string.Format("Execution ID changed."));
                }
                string  FileName = string.Empty;
                DutInfo Dut      = null;
                FileName = string.Empty;
                TestItem tiStart = e.Item;

                if (true == string.IsNullOrEmpty(FullName) || false == System.IO.File.Exists(FullName))//full name is null or the file does not exist
                {
                    Dut     = e.Dut;
                    tiStart = e.Item;
                    if (false == string.IsNullOrEmpty(Dut.SerialNumber))
                    {
                        FileName = string.Format("{0}_", Dut.SerialNumber);
                    }
                    if (null != e.TimeStamp)//not null
                    {
                        FileName = string.Format("{0}{1}.json)", FileName, e.TimeStamp.ToString(CommonTags.Common_LongDateTime));
                    }
                }
                //Open record file
                JObject joFile = OpenFile();//open record file

                //ToDo: add an item.
                TestItemInfo ItemInfo = e.Item.ItemInfo;
                DutInfo      DUT      = e.Dut;
                string       strPointID;

                for (int index = 0; index < tiStart.OutputSpec.Count; index++)
                {
                    Dictionary <string, string> dictPointInfo = PointRecord(tiStart, index, null);
                    strPointID = tiStart.OutputSpec[index].MeasPointID;

                    JObject joInfo = JObject.Parse(JsonConvert.SerializeObject(dictPointInfo)); //convert dictionary to jobject
                    joFile.Add(strPointID, joInfo);                                             //add new point to record. update values by point id later.
                }

                File.WriteAllText(FullName, joFile.ToString());//save recode
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 添加检测项到TreeView中
        /// </summary>
        private void AddTestItemsToTreeView()
        {
            TreeNode newNode = optionalFuncTreeView.SelectedNode;

            if (IsRoot(newNode))
            {
                return;
            }

            InitSelectedFuncTreeViewNodes();
            TestTargetType nodeType = (TestTargetType)Enum.Parse(typeof(TestTargetType), newNode.Parent.Name);

            if (nodeType == TestTargetType.Meter) //添加到对应list
            {
                TestItemID++;
                TestItemInfo itemInfo = new TestItemInfo();
                itemInfo.Name           = newNode.Text;
                itemInfo.ID             = TestItemID;
                itemInfo.TestTargetType = TestTargetType.Meter;
                itemInfo.Parameter      = ProfileManager.Instance.GetCommandParameter(newNode.Text);
                SelectedMeterDetect.Add(itemInfo);
            }
            else if (nodeType == TestTargetType.PowerSource)
            {
                TestItemID++;
                TestItemInfo itemInfo = new TestItemInfo();
                itemInfo.Name           = newNode.Text;
                itemInfo.ID             = TestItemID;
                itemInfo.TestTargetType = TestTargetType.PowerSource;
                itemInfo.Parameter      = ProfileManager.Instance.GetCommandParameter(newNode.Text);
                SelectedPowerDetect.Add(itemInfo);
            }

            TreeNode tn = selectedFuncTreeView.Nodes[0];

            foreach (TestItemInfo item in SelectedMeterDetect)
            {
                tn.Nodes.Add(item.Name);
            }

            tn = selectedFuncTreeView.Nodes[1];
            foreach (TestItemInfo item in SelectedPowerDetect)
            {
                tn.Nodes.Add(item.Name);
            }

            selectedFuncTreeView.ExpandAll();
        }
        /// <summary>
        /// 执行Commandl类Excute函数
        /// </summary>
        /// <param name="client">PcbTesterClient句柄</param>
        /// <param name="testItem">选中的检测项</param>
        /// <returns>检测结果</returns>
        public CommandResult Excute(PcbTesterClient client, TestItemInfo testItem)
        {
            var command = ProfileManager.Instance.GetCommand(testItem.Name);

            var commandResult = new CommandResult();

            try
            {
                commandResult = command.Execute(client, testItem.Parameter, null);
                logger.InfoFormat("Run test:{0}...", testItem.Name);
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Run test:{0}; Exception message:{1}.", testItem.Name, ex.Message);
                throw new Exception(ex.Message);
            }

            return(commandResult);
        }
Esempio n. 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="itemRoot"></param>
        /// <param name="itemRef"></param>
        /// <returns></returns>
        public static bool assignTestItem(TestItemInfo itemRoot, TestItemInfo itemRef)
        {
            try {
                itemRoot.OrderNo     = itemRef.OrderNo;
                itemRoot.ItemName    = itemRef.ItemName;
                itemRoot.ItemUnit    = itemRef.ItemUnit;
                itemRoot.IsPower     = itemRef.IsPower;
                itemRoot.IsCheck     = itemRef.IsCheck;
                itemRoot.Bank1       = itemRef.Bank1;
                itemRoot.Bank2       = itemRef.Bank2;
                itemRoot.LowerValue  = itemRef.LowerValue;
                itemRoot.UpperValue  = itemRef.UpperValue;
                itemRoot.MeasureTime = itemRef.MeasureTime;
                itemRoot.RetryTime   = itemRef.RetryTime;

                itemRoot.GoodMessage  = itemRef.GoodMessage;
                itemRoot.ErrorMessage = itemRef.ErrorMessage;
                return(true);
            } catch {
                return(false);
            }
        }
Esempio n. 9
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);
            }
        }
Esempio n. 10
0
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem itm = sender as MenuItem;

            switch (itm.Header.ToString())
            {
            case "New An Item": {
                try {
                    int index = myGlobal.duts[0].Cases[0].Items.Count + 1;
                    var item  = new TestItemInfo()
                    {
                        ItemName = string.Format("New Item {0}", index), OrderNo = index.ToString()
                    };
                    myGlobal.duts[0].Cases[0].Items.Add(item);
                    myGlobal.duts[0].Cases[0].ItemCount = myGlobal.duts[0].Cases[0].Items.Count;
                }
                catch { }
                break;
            }

            case "New Range Item": {
                NewRangeItemWindow window = new NewRangeItemWindow();
                window.ShowDialog();
                int rangeCount = window.numberItem;
                if (rangeCount == 0)
                {
                    break;
                }

                try {
                    for (int i = 0; i < rangeCount; i++)
                    {
                        var index = myGlobal.duts[0].Cases[0].Items.Count + 1;
                        var item  = new TestItemInfo()
                        {
                            ItemName = string.Format("New Item {0}", index), OrderNo = index.ToString()
                        };
                        myGlobal.duts[0].Cases[0].Items.Add(item);
                        myGlobal.duts[0].Cases[0].ItemCount = myGlobal.duts[0].Cases[0].Items.Count;
                    }
                }
                catch { }
                break;
            }

            case "Delete Item": {
                try {
                    var item = (TestItemInfo)trvItemTest.SelectedItem;
                    myGlobal.duts[0].Cases[0].Items.Remove(item);
                    myGlobal.duts[0].Cases[0].ItemCount = myGlobal.duts[0].Cases[0].Items.Count;

                    for (int i = 0; i < myGlobal.duts[0].Cases[0].Items.Count; i++)
                    {
                        myGlobal.duts[0].Cases[0].Items[i].OrderNo = string.Format("{0}", i + 1);
                    }
                }
                catch { }
                break;
            }

            case "Refresh": {
                break;
            }

            case "Run Test (F6)": {
                try {
                    var item = (TestItemInfo)trvItemTest.SelectedItem;
                    int idx  = myGlobal.duts[0].Cases[0].Items.IndexOf(item);

                    Thread t = new Thread(new ThreadStart(() => {
                            TestItem.Validating(myGlobal.duts[0].Cases[0].Items[idx]);

                            //off power supply
                            if (myGlobal.settingInfo.OFFPower == "Yes")
                            {
                                if (myGlobal.settingInfo.EnablePower.ToLower().Contains("yes"))
                                {
                                    if (myGlobal.powerDevice != null && myGlobal.powerDevice.IsConnected)
                                    {
                                        AbstractExcute.set_Power_Supply_OFF();
                                    }
                                }
                            }
                            //reset relay
                            if (myGlobal.settingInfo.ResetSwitch == "Yes")
                            {
                                if (myGlobal.switchDevice != null && myGlobal.switchDevice.IsConnected)
                                {
                                    myGlobal.switchDevice.Set_Card_Open();
                                }
                            }
                        }));
                    t.IsBackground = true;
                    t.Start();
                }
                catch {
                }
                break;
            }

            default: break;
            }
        }
Esempio n. 11
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);
            }
        }
Esempio n. 12
0
        public static bool FromCsvFile(string filepath, string filename)
        {
            try {
                StreamReader sr   = new StreamReader(filepath, Encoding.Unicode);
                string       data = sr.ReadLine(); //ignore title
                //check file format
                string[] buffer = data.Split(new string[] { "\",\"" }, StringSplitOptions.None);
                if (buffer.Length != 16)
                {
                    return(false);
                }

                List <TestItemInfo> items = new List <TestItemInfo>();

                //read test item
                while (sr.Peek() != -1)
                {
                    data   = sr.ReadLine();
                    buffer = data.Split(new string[] { "\",\"" }, StringSplitOptions.None);
                    if (buffer.Length != 16)
                    {
                        return(false);
                    }

                    var item = new TestItemInfo()
                    {
                        OrderNo      = buffer[0].Replace("\"", "").Trim(),
                        ItemName     = buffer[1].Replace("\"", "").Trim(),
                        Bank1        = buffer[2].Replace("\"", "").Trim(),
                        Bank2        = buffer[3].Replace("\"", "").Trim(),
                        ItemUnit     = buffer[4].Replace("\"", "").Trim(),
                        UnitType     = buffer[5].Replace("\"", "").Trim(),
                        LowerValue   = buffer[6].Replace("\"", "").Trim(),
                        UpperValue   = buffer[7].Replace("\"", "").Trim(),
                        MeasureTime  = buffer[8].Replace("\"", "").Trim(),
                        RetryTime    = buffer[9].Replace("\"", "").Trim(),
                        WaitTime     = buffer[10].Replace("\"", "").Trim(),
                        Range        = buffer[11].Replace("\"", "").Trim(),
                        IsPower      = buffer[12].Replace("\"", "").Trim() == "1" ? "True" : "False",
                        IsCheck      = buffer[13].Replace("\"", "").Trim() == "1" ? "True" : "False",
                        GoodMessage  = buffer[14].Replace("\"", "").Trim(),
                        ErrorMessage = buffer[15].Replace("\"", "").Trim()
                    };

                    items.Add(item);
                }

                myGlobal.duts.Clear();

                filename = filename.Replace("Script_Test_", "").Replace(".csv", "").Replace(".CSV", "");

                var dut = new ICT_VNPT.Func.Custom.DutInfo(filename)
                {
                    Path = filepath
                };
                dut.Cases.Add(new ICT_VNPT.Func.Custom.TestCaseInfo());

                foreach (var i in items)
                {
                    dut.Cases[0].Items.Add(i);
                }

                myGlobal.duts.Add(dut);
                myGlobal.SelectedItemIndex = -1;

                myGlobal.windowInfo.WindowTitle = string.Format("ICT_VNPT - {0}", filepath);
                return(true);
            } catch (Exception ex) {
                throw new Exception(ex.Message);
            }
        }