//以下檢查站時不包含每個Printer的Rule private bool CheckEachValues(int laneID, OneLaneSelectorVM vm, CommonSettingVM commonvm, SharedFolderSettingVM sfvm) { bool _bAllGood = true; //1.檢查CommonSetting //2.檢查SharedFolderSetting _window.lbStatusReporter.Items.Add(String.Format("@LANE_DATA".Translate() + ":", laneID + 1)); Log4.PrinterLogger.InfoFormat("Check Lane {0} Data:", laneID + 1); //Input SharedFolder if (SharedFolderRules.HasInputSharedFolder(vm.Vendor)) { _bAllGood = CheckSharedFolder(sfvm.InDriveInfo, "@RECIEVE"); } //Output SharedFolder if (SharedFolderRules.HasOutputSharedFolder(vm.Vendor)) { _bAllGood = CheckSharedFolder(sfvm.OutDriveInfo, "@SEND"); } if (_bAllGood) { _window.lbStatusReporter.Items.Add("@PASS".Translate()); Log4.PrinterLogger.Info(" RESULT = PASS!"); } return(_bAllGood); }
/// <summary> /// Service開啟的入口點***** /// </summary> /// <param name="laneID">The lane identifier.</param> /// <param name="vm">The vm.</param> /// <param name="commonvm">The commonvm.</param> /// <param name="sfvm">The SFVM.</param> /// <returns></returns> public bool ImportSetting(int laneID, OneLaneSelectorVM vm, CommonSettingVM commonvm, SharedFolderSettingVM sfvm) { bool ret = false; RemotePrinter[laneID].PrinterVendor = vm.Vendor;//此時Create物件,開始監控sharedFolder RemotePrinter[laneID].Printer.PrinterCommonSetting = commonvm.Clone(); RemotePrinter[laneID].Printer.PrinterSFSetting = sfvm.Clone(); RemotePrinter[laneID].Printer.Activate();//開始監控 return(ret); }
public PrinterBase(ePrinterVendor vendor, eAssignedLane_Printer laneID) { LaneID = laneID; Vendor = vendor; InspectedPanels.Clear(); PrinterCommonSetting = new CommonSettingVM(); PrinterSFSetting = new SharedFolderSettingVM(); DxHistory = new ObservableCollection <KeyValuePair <double, double> >(); DyHistory = new ObservableCollection <KeyValuePair <double, double> >(); ThetaHistory = new ObservableCollection <KeyValuePair <double, double> >(); DxHistory.Clear(); DyHistory.Clear(); ThetaHistory.Clear(); //Accumulation = 0;//= AccDx = AccDy = AccTheta = 0; }
static public CommonSettingVM ToCommonSettingVM(this XElement root) { CommonSettingVM ret = null; try { ret = new CommonSettingVM(); eMatchingBasis basis; Enum.TryParse(root.getValue("MatchingBasis"), true, out basis);// #改Enum ret.MatchingBasis = basis; ret.IsMoveStencil = bool.Parse(root.getAttributeValue("Adjustment", "IsMoveStencil")); ret.IsMovePCB = bool.Parse(root.getAttributeValue("Adjustment", "IsMovePCB")); ret.IsCWRotate = bool.Parse(root.getAttributeValue("Rotate", "IsCWRotate")); ret.IsCCWRotate = bool.Parse(root.getAttributeValue("Rotate", "IsCCWRotate")); ret.IsQuadrent1 = bool.Parse(root.getAttributeValue("Quadrent", "IsQuadrent1")); ret.IsQuadrent2 = bool.Parse(root.getAttributeValue("Quadrent", "IsQuadrent2")); ret.IsQuadrent3 = bool.Parse(root.getAttributeValue("Quadrent", "IsQuadrent3")); ret.IsQuadrent4 = bool.Parse(root.getAttributeValue("Quadrent", "IsQuadrent4")); var FilterElement = root.getElement("Filter"); ret.IsHeightFilter = bool.Parse(FilterElement.getValue("Height")); ret.HeightRange.LowerBound = double.Parse(FilterElement.getAttributeValue("Height", "LowerBound")); ret.HeightRange.UpperBound = double.Parse(FilterElement.getAttributeValue("Height", "UpperBound")); ret.IsAreaFilter = bool.Parse(FilterElement.getValue("Area")); ret.AreaRange.LowerBound = double.Parse(FilterElement.getAttributeValue("Area", "LowerBound")); ret.AreaRange.UpperBound = double.Parse(FilterElement.getAttributeValue("Area", "UpperBound")); ret.IsVolumeFilter = bool.Parse(FilterElement.getValue("Volume")); ret.VolumeRange.LowerBound = double.Parse(FilterElement.getAttributeValue("Volume", "LowerBound")); ret.VolumeRange.UpperBound = double.Parse(FilterElement.getAttributeValue("Volume", "UpperBound")); } catch { return(null); } return(ret); }
/// <summary> /// Gets the candidate boxes. 每個繼承PrinterBase在實作 Caculate的時候會使用到此function 為UI介面挑選box的candidate選項 /// </summary> /// <param name="currentPanel">The current panel.</param> /// <param name="vm">The vm.</param> /// <returns></returns> public static List <Box> GetCandidateBoxes(InspectedPanel currentPanel, CommonSettingVM vm) { List <Box> Boxes = new List <Box>(); //var BadBoards = (from board in currentPanel.Panel.Boards // where board.IsHasBadMark == true // select board).ToList(); foreach (var board in currentPanel.Panel.Boards) { if (board.IsSkipped || board.IsHasBadMark) { continue; } foreach (var component in board.Components) { foreach (var box in component.Boxes) { bool _IsPassHFilter = false; bool _IsPassAFilter = false; bool _IsPassVFilter = false; //H if (vm.IsHeightFilter) { if (box.Height_p >= vm.HeightRange.LowerBound && box.Height_p <= vm.HeightRange.UpperBound) { _IsPassHFilter = true; } else { _IsPassHFilter = false; } } else { _IsPassHFilter = true; //表示不用Filter } //A if (vm.IsAreaFilter) { if (box.Area_p >= vm.AreaRange.LowerBound && box.Area_p <= vm.AreaRange.UpperBound) { _IsPassAFilter = true; } else { _IsPassAFilter = false; } } else { _IsPassAFilter = true; //表示不用Filter } //V if (vm.IsVolumeFilter) { if (box.Volume_p >= vm.VolumeRange.LowerBound && box.Volume_p <= vm.VolumeRange.UpperBound) { _IsPassVFilter = true; } else { _IsPassVFilter = false; } } else { _IsPassVFilter = true; //表示不用Filter } if (_IsPassHFilter && _IsPassAFilter && _IsPassVFilter) { Boxes.Add(box); } } } } return(Boxes); }
void ExecuteSaveFile() { List <OneLaneSelectorVM> _lstOneLaneModel = new List <OneLaneSelectorVM>(); foreach (var item in ViewModelLocator.Atom.LaneSelectorHostVM.LaneContainer) { _lstOneLaneModel.Add((OneLaneSelectorVM)(item as ucOneLaneSelector).DataContext); } TRMessageBox.Show("@AUTOLOADFILENAME_HINT".Translate()); System.Windows.Forms.SaveFileDialog ofd = new System.Windows.Forms.SaveFileDialog(); ofd.Filter = "Xml Files (*.xml)| *.xml"; //string pathName = "PlacerCenter.xml"; ofd.Filter = "Xml Files (*.xml)| *.xml"; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { XElement root = new XElement("PRINTERCENTER"); CommonSettingVM lane1CommonVM = (CommonSettingVM)_window.ucLane1_Common.DataContext; SharedFolderSettingVM lane1SFVM = (SharedFolderSettingVM)_window.ucLane1_SF.DataContext; CommonSettingVM lane2CommonVM = (CommonSettingVM)_window.ucLane2_Common.DataContext; SharedFolderSettingVM lane2SFVM = (SharedFolderSettingVM)_window.ucLane2_SF.DataContext; List <XElement> LaneList = new List <XElement>(); foreach (var lane in _lstOneLaneModel) { var iLaneID = _lstOneLaneModel.IndexOf(lane) + 1; var sVendor = lane.Vendor; if (iLaneID == 1) { var el = new XElement("LANE", new XAttribute("ID", iLaneID) , new XElement("Vendor", sVendor) , lane1CommonVM.ToXml() , lane1SFVM.ToXml() ); LaneList.Add(el); } else if (iLaneID == 2) { var el = new XElement("LANE", new XAttribute("ID", iLaneID) , new XElement("Vendor", sVendor) , lane2CommonVM.ToXml() , lane2SFVM.ToXml() ); LaneList.Add(el); } } root.Add(LaneList); root.Save(ofd.FileName); } catch (Exception ex) { Log4.PrinterLogger.ErrorFormat("Exception={0}", ex.Message); return; } } }
/// <summary> /// CommonSettingVM /// 原先Printer計算流程: PrinterCorrection > WipeAlogrithm(MPM) > 建立MergedData > Update /// Update步驟內將 "PrinterCorrection" 算好的資料,再根據註冊表做轉換 /// 原先註冊表 1.bSolderMoveToPad 2.bCCWRotate 3.nQuandarnt /// </summary> /// <param name="setting">The setting.</param> public RotationCorrectionAlgorithm(CommonSettingVM setting) { Name = "Rotation Algorithm"; Settings = setting; }