Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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));
                }
            });
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
        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));
                }
            });
        }
Exemplo n.º 6
0
        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));
                }
            });
        }
Exemplo n.º 7
0
        /// <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);
                }
            }
        }
Exemplo n.º 8
0
        /// <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();
                }
            }
        }
Exemplo n.º 9
0
        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));
            }
        }