public static Task <List <FeederState> > GetFeederStates() { using (var context = new SmdppEntities()) { try { var result = (from f in context.FeederSlots join c in context.Components on f.CurrentPartID equals c.ID into cParts from c1 in cParts.DefaultIfEmpty() join s in context.Components on f.SuggestedPartID equals s.ID into sParts from s1 in sParts.DefaultIfEmpty() select new FeederState() { Slot = new Contracts.FeederSlot() { ID = f.ID, Depth = f.Depth, PickupX = f.PickupX, PickupY = f.PickupY, Width = f.Width, }, CurrentPart = c1 == null ? null : new Contracts.Component() { ID = c1.ID, Value = c1.Value, Package = new Contracts.Package() { ID = c1.PackageID, Name = c1.Package.Name } }, SuggestedPart = s1 == null ? null : new Contracts.Component() { ID = s1.ID, Value = s1.Value, Package = new Contracts.Package() { ID = s1.PackageID, Name = s1.Package.Name } } }).ToList(); result.All(delegate(FeederState contract) { return(true); }); return(Task.FromResult(result)); } catch (Exception ex) { Logger.Enqueue(ex); return(null); } } }
private static void EventSink_FeedersRequested() { var task = Task.Run(async() => { using (SmdppEntities context = new SmdppEntities()) { var result = await FeederManager.GetFeederSlots(); var json = JsonConvert.SerializeObject(result); ScriptRunner.Run(ScriptAction.ListFeedersReply, Utility.HtmlEncode(json)); } }); }
public GetAvailablePackageNamesCallback() { using (SmdppEntities context = new SmdppEntities()) { this.Packages = context.Packages.Select(q => new Contracts.Package() { ID = q.ID, Name = q.Name }).ToList(); } this.Message = "We've returned all the packages."; this.Success = true; }
public static Task <List <Contracts.FeederSlot> > GetFeederSlots() { using (var context = new SmdppEntities()) { var result = context.FeederSlots.OrderBy(q => q.PickupX) .Select(q => new Contracts.FeederSlot() { ID = q.ID, Width = q.Width, Depth = q.Depth, PickupX = q.PickupX, PickupY = q.PickupY }).ToList(); return(Task.FromResult(result)); } }
private static void EventSink_ListPackagesRequested() { var task = Task.Run(() => { using (SmdppEntities context = new SmdppEntities()) { var packages = context.Packages.ToList().Select(q => new Contracts.Package() { ID = q.ID, Name = q.Name, Data = q.Data }).ToList(); var json = JsonConvert.SerializeObject(packages); ScriptRunner.Run(ScriptAction.ListPackagesReply, Utility.HtmlEncode(json)); } }); }
private static void EventSink_ListComponentsRequested() { var task = Task.Run(() => { using (SmdppEntities context = new SmdppEntities()) { var components = context.Components.Select(q => new Contracts.Component() { ID = q.ID, Value = q.Value, Package = new Contracts.Package() { ID = q.PackageID, Name = q.Package.Name } }).ToList(); var json = JsonConvert.SerializeObject(components); ScriptRunner.Run(ScriptAction.ListComponentsReply, Utility.HtmlEncode(json)); } }); }
/// <summary> /// Selects the best appropriate slot for the given pnp part. Currently /// it only looks for on which slot the same component is attached. Later this can /// suggest empty slots /// </summary> /// <param name="part">Pick and place part details which to look for its best place</param> /// <returns></returns> public static Task <Contracts.FeederSlot> GetAppropriateSlotFor(PnpPart part) { using (var context = new SmdppEntities()) { Package package = context.Packages.FirstOrDefault(q => q.ID == part.PackageID); if (package != null) { Contracts.FeederSlot slot = context.FeederSlots.Where(q => q.CurrentPartID != null && q.ConnectedPart.Value == part.Value).Select(y => new Contracts.FeederSlot() { ID = y.ID, Depth = y.Depth, PickupX = y.PickupX, PickupY = y.PickupY, Width = y.Width }).FirstOrDefault(); return(Task.FromResult(slot)); } else { return(null); } } }
/// <summary> /// Manual parsing has been disabled /// </summary> /// <param name="filePath"></param> public static void ParseAresLibrary(string filePath) { var data = ""; using (StreamReader reader = new StreamReader(filePath, Encoding.Default)) { data = reader.ReadToEnd(); } var lines = data.Split('\n').ToList().Skip(11); List <Package> detectedPackages = new List <Package>(); Package packageInstance = null; lines.All(delegate(string line) { /* * Object name.......: CHIPFET1206A-03 * Last modified.....: 06 Haziran 2016 Pazartesi 13:43:55 * File offset (hex).: 00007D20 (Hex). * Checksum (hex)....: F595 (Hex). * Size (bytes)......: 1,130 * * */ if (packageInstance == null) { packageInstance = new Package(); } var splitResult = line.Split(new string[] { ": " }, StringSplitOptions.None); if (splitResult.Length == 2) { var dataValue = splitResult[1].Replace("\r", ""); if (line.StartsWith("Object name")) { packageInstance.Name = ParseName(dataValue); } /*else if (line.StartsWith("Last modi")) * packageInstance.LastModified = ParseLastModified(dataValue); * else if (line.StartsWith("File offset")) * packageInstance.Offset = ParseOffset(dataValue); * else if (line.StartsWith("Checksum")) * packageInstance.Checksum = ParseChecksum(dataValue); * else if (line.StartsWith("Size")) * packageInstance.Size = ParseSize(dataValue); */ if (IsPackageReady(packageInstance)) { detectedPackages.Add(packageInstance); packageInstance = null; } } return(true); }); if (detectedPackages.Count > 0) { using (SmdppEntities context = new SmdppEntities()) { context.Packages.AddRange(detectedPackages); context.SaveChanges(); } } }
private Task <bool> Parse(string filePath) { string data = ""; using (StreamReader reader = new StreamReader(filePath, Encoding.Default, true)) { data = reader.ReadToEnd(); } if (!string.IsNullOrEmpty(data)) { string[] lines = data.Split('\n'); List <PnpPart> parts = ExtractParts(lines); Layer smtLayer = Layers.Parse(Settings.Default.SmtLayer); List <PnpPart> smtParts = parts.Where(q => q.Layer == smtLayer).ToList(); List <PnpPart> dipParts = parts.Where(q => q.Layer != smtLayer).ToList(); PnpJob contract = new PnpJob(); List <Contracts.Package> availablePackages = new List <Contracts.Package>(); using (SmdppEntities context = new SmdppEntities()) { List <string> usedPackages = smtParts.GroupBy(q => q.PackageName).Select(q => q.FirstOrDefault().PackageName).ToList(); usedPackages.All(delegate(string packageName) { var package = context.Packages.Where(q => q.Name == packageName).Select(q => new Contracts.Package() { ID = q.ID, Name = q.Name, Data = q.Data }).FirstOrDefault(); if (package != null) { availablePackages.Add(package); } return(true); }); } smtParts.All(delegate(PnpPart part) { Contracts.Package usedPackage = availablePackages.FirstOrDefault(q => q.Name == part.PackageName); if (usedPackage != null) { part.PackageID = usedPackage.ID; } part.Position.Y *= -1; part.Value = part.Value.ToUpper(); return(true); }); contract.AvailablePackages = availablePackages; contract.Parts = smtParts; contract.Offset = GetPlacementOffset(smtParts); contract.BoardSize = GetBoardDimensions(smtParts); EventSink.InvokePnpFileParsed(contract); return(Task.FromResult(true)); } else { return(Task.FromResult(false)); } }