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); }
private void listBox_TestItems_SelectedIndexChanged(object sender, EventArgs e) { if (listBox_TestItems.SelectedItem is TestItemInfo) { SelectedItem = listBox_TestItems.SelectedItem as TestItemInfo; } }
/// <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; } }
/// <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); }
// 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); } }
/// <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); }
/// <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); } }
/// <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); } }
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; } }
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); } }
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); } }