Example #1
0
        void HandleTCS(PPBodyQueryRequest tx) {
            if (tx.Type != "Sequence")
                return;

            var s7f26 = EAP.Send(new SecsMessage(7, 25, "PPBodyQuery", Item.A(tx.PPID)));

            if (s7f26.SecsItem.Items[0].ToString() != tx.PPID)
                throw new ScenarioException("PPID unmatch!!!");

            if (s7f26.SecsItem.Items[3].Count < 5)
                throw new ScenarioException("PPBody is empty");

            var bodyList = s7f26.SecsItem.Items[3].Items;
            for (int i = 0; i < bodyList.Count; i++) {
                Item item = bodyList[i];
                string chamberItem = item.Items[1].Items[0].ToString();

                switch (chamberItem) {
                    case "LL-H": //Step1 LL-H RecipeName
                        tx.Add(new PPBodyItem {
                            ID1 = "1",
                            ID2 = chamberItem,
                            Value = item.Items[1].Items[1].ToString()
                        });
                        break;
                    case "B": //Step2 B RecipeName 
                    case "C": //Step2 C RecipeName 
                    case "D": //Step2 D RecipeName 
                        string chamberRecipe = item.Items[1].Items[1].ToString();
                        if (chamberRecipe.Contains("Shutter"))
                            continue;

                        tx.Add(new PPBodyItem {
                            ID1 = "2",
                            ID2 = chamberItem,
                            Value = chamberRecipe
                        });

                        int stepCount = int.Parse(item.Items[1].Items[2].ToString());
                        int paramNum = int.Parse(item.Items[1].Items[3].ToString());
                        for (int j = i + 1; j < i + paramNum + 1; j++) {
                            item = bodyList[j];
                            string itemName;
                            if (_nameMap.TryGetValue(item.Items[0].FirstValue<ushort>(), out itemName)) {
                                for (int step = 0; step < stepCount; step++) {
                                    tx.Add(new PPBodyItem {
                                        ID1 = "2",
                                        ID2 = chamberItem,
                                        ID3 = "Step" + (step + 1),
                                        ID4 = itemName,
                                        Value = item.Items[1].Items[1 + 4 * step].ToString()
                                    });
                                }
                            }
                        }
                        i += paramNum;
                        break;
                }
            }
        }
Example #2
0
        void HandleTCS(PPBodyQueryRequest tx) {
            if (tx.Type != "Body")
                return;

            var s7f6 = EAP.Send(new SecsMessage(7, 5, "PPBodyQuery", Item.A(tx.PPID)));

            if (s7f6.SecsItem.Items[0].ToString() != tx.PPID)
                throw new ScenarioException("PPID unmatch!!");

            if (s7f6.SecsItem.Items.Count == 0)
                throw new ScenarioException("PPBody is null");

            string body = s7f6.SecsItem.Items[1].ToString();

            if (EAP.ToolId.StartsWith("PEU")) {
                tx.Add( new PPBodyItem {
                    ID1 = "IrrMethod_Ref",
                    Value = body.Substring(0x48, 3).Trim()
                });

                tx.Add(new PPBodyItem {
                    ID1 = "Exposure_Time",
                    Value = body.Substring(0x4d, 3).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "Exposure_Intensity",
                    Value = body.Substring(0x51, 1).Trim()
                });
            } else if (EAP.ToolId.StartsWith("PGU")) {
                tx.Add( new PPBodyItem {
                    ID1 = "RecipeName",
                    Value = body.Substring(0, 48).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "RecipeEditDate",
                    Value = body.Substring(49, 10).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "RecipeEditTime",
                    Value = body.Substring(59, 9).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "RecipeValidity",
                    Value = body.Substring(68, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationTimeIntensity_u1",
                    Value = body.Substring(70, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationTimeIntensity_u2",
                    Value = body.Substring(75, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationTimeIntensity_u3",
                    Value = body.Substring(80, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationTimeIntensity_u4",
                    Value = body.Substring(85, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationTimeIntensity_u5",
                    Value = body.Substring(90, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationIntensity_i1",
                    Value = body.Substring(95, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationIntensity_i2",
                    Value = body.Substring(97, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationIntensity_i3",
                    Value = body.Substring(99, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationIntensity_i4",
                    Value = body.Substring(101, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "IrradiationIntensity_i5",
                    Value = body.Substring(103, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTimeInterval_t1",
                    Value = body.Substring(105, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTimeInterval_t2",
                    Value = body.Substring(110, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTimeInterval_t3",
                    Value = body.Substring(115, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTimeInterval_t4",
                    Value = body.Substring(120, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTimeInterval_t5",
                    Value = body.Substring(125, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTemperature_T1",
                    Value = body.Substring(130, 4).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTemperature_T2",
                    Value = body.Substring(134, 4).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTemperature_T3",
                    Value = body.Substring(138, 4).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTemperature_T4",
                    Value = body.Substring(142, 4).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "HotPlateTemperature_T5",
                    Value = body.Substring(146, 4).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "CoolingStageUsage",
                    Value = body.Substring(150, 2).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "CoolingTimeAtTheCoolingStage",
                    Value = body.Substring(152, 5).Trim()
                });

                tx.Add( new PPBodyItem {
                    ID1 = "PurgeDuringProcess",
                    Value = body.Substring(157, 2).Trim()
                });
            }
        }