public void ConnectToTask(IronPythonTask task)
 {
     task.TracebackEvent += pc.TracebackEvent;
     task.ExceptionEvent += Task_ExceptionEvent;
     pc.Watching          = true;
     task.AddMonitor(this);
 }
Beispiel #2
0
 public static void TryStart(IronPythonTask task)
 {
     if (!task.Running)
     {
         cpu.StartTask(task);
     }
 }
        public override void PrepareWPF()
        {
            try
            {
                pc = new IronPythonDebuger();
                pc.Info1.Content = TaskName;
                pc.Info2.Content = PYPath;

#if RTA
                if (!YZXCPUInRuntime.cpu.HasTask(TaskName))
                {
                    YZXCPUInRuntime.AddIronPythonTask(TaskName, PYPath);
                }

                task = YZXCPUInRuntime.cpu.GetTask(TaskName) as IronPythonTask;

                if (task != null)
                {
                    task.Scope.SetVariable("self", this);
                    task.Scope.SetVariable("CPU", YZXCPUInRuntime.cpu);
                    pc.Task    = task;
                    pc.Loaded += Pc_Loaded;
                }
#endif

                WPF.Child = pc;

                hideInfo();
            }
            catch (XamlParseException ex)
            {
                showInfo(ex.ToString());
            }
        }
 public void ConnectToTask(IronPythonTask task)
 {
     MoniteredTask        = task;
     lines                = task.Path.ReadLines();
     task.TracebackEvent += TracebackEvent;
     task.ExceptionEvent += Task_ExceptionEvent;
     task.AddMonitor(this);
 }
Beispiel #5
0
 public void ConfigIronPythonTask(IronPythonTask ipytask)
 {
     foreach (KeyValuePair <string, YZXCPUMemory> m in Mermories)
     {
         string       name   = m.Key;
         YZXCPUMemory memory = m.Value;
         ipytask.Engine.Runtime.Globals.SetVariable(name, memory);
     }
 }
        private void PythonRunningLineView_Load(object sender, EventArgs e)
        {
#if RTA
            MoniteredTask = YZXCPUInRuntime.cpu.GetTask(TaskName) as IronPythonTask;

            if (MoniteredTask != null)
            {
                ConnectToTask(MoniteredTask);
                connect2CC();
            }
#endif
        }
Beispiel #7
0
        public static IronPythonTask AddIronPythonTask(string TaskName, string PYPath)
        {
            IronPythonTask task = cpu.AddIronPythonTask(TaskName, PYPath);

            List <IronPythonTaskMonitor> monitors = CControlSystem.GetTaskMonitor(TaskName);

            foreach (IronPythonTaskMonitor mm in monitors)
            {
                mm.ConnectToTask(task);
            }
            return(task);
        }
Beispiel #8
0
        public IronPythonTask AddIronPythonTask(string TaskName, string PYPath)
        {
            IronPythonTask task = new IronPythonTask(TaskName, PYPath);

            task.Scope.SetVariable("self", this);
            task.Name    = TaskName;
            task.RunType = YZXTaskRunType.CONTINUE;
            //task.RunType = YZXTaskRunType.WaitForFinish;

            AddTask(task);
            return(task);
        }
Beispiel #9
0
        /// <summary>
        /// 配置任务
        /// </summary>
        public void ConfigTasks(YZXCPUProject Project)
        {
            AddGCTask();

            foreach (System.Tuple <YZXTaskTypes, YZXTask> tt in Project.Tasks)
            {
                YZXTask task = tt.Item2;
                if (tt.Item1 == YZXTaskTypes.IronPython)
                {
                    IronPythonTask ipytask = task as IronPythonTask;
                    ipytask.InitR();
                    ConfigIronPythonTask(ipytask);
                }

                Tasks[task.Name] = task;
            }
        }
        public void SaveDemoProject()
        {
            Mermories["DI"]   = 100;
            Mermories["DO"]   = 100;
            Mermories["M"]    = 100;
            Mermories["R"]    = 100;
            Mermories["DB1"]  = 512;
            Mermories["MBT1"] = 100;

            RandomUnit RandomUnit1 = new RandomUnit("RandomUnit1", 100);

            RandomUnit1.Mins[0] = 0;
            RandomUnit1.Maxs[0] = 100;

            RandomUnit1.Mins[1] = 0;
            RandomUnit1.Maxs[1] = 100;

            Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.Random, RandomUnit1));

            YZXS7Client s7client = new YZXS7Client("local", "127.0.0.1");
            //s7client.con();

            Snap7ClientDBUnit db1 = new Snap7ClientDBUnit(s7client, 1, 512);

            Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.Snap7ClientDB, db1));


            ModbusTCPUnit mbt1 = new ModbusTCPUnit("127.0.0.1", 502, 0, 100);

            Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.ModbusTCP, mbt1));

            Maps.Add(new YZXUnitMemoryMap("RandomUnit1", "R"));
            Maps.Add(new YZXUnitMemoryMap(mbt1.Name, "MBT1"));
            Maps.Add(new YZXUnitMemoryMap(db1.Name, "DB1", 0, 512));

            IronPythonTask ipytask = new IronPythonTask("Task1", "Ironpython/Task1.py");

            ipytask.RunType = YZXTaskRunType.CONTINUE;
            Tasks.Add(new Tuple <YZXTaskTypes, YZXTask>(YZXTaskTypes.IronPython, ipytask));


            SaveCPUProject("DemoCPUProject.xml");
        }
Beispiel #11
0
        public void InitIronPythonTasks()
        {
            IronPythonTaskInited = false;
            IronPythonTask task;

            task = new IronPythonTask("Task1", @"IronPythonTask\Task1.ipy");
            IronPythonTasks["Task1"] = task;

            task = new IronPythonTask("Task1", @"IronPythonTask\Task2.ipy");
            IronPythonTasks["Task2"] = task;

            SyncPointCount.Subscribe(i => {
                RunPythonTasks();
            });

            foreach (var itask in IronPythonTasks)
            {
                itask.Value.Init();
            }

            IronPythonTaskInited = true;
        }
Beispiel #12
0
        public void ConnectToTask(IronPythonTask task)
        {
            Task = task;

            task.TracebackEvent += TracebackEvent;
        }
        /// <summary>
        /// 从项目文件加载项目
        /// </summary>
        /// <param name="ProjectPath"></param>
        public void LoadCPUProject(string ProjectPath)
        {
            XElement root;

            try
            {
                root = XElement.Load(ProjectPath);

                IEnumerable <XElement> itemsXML;

                CPUAddress = root.Element("CPUAddress").Value;

                //内存区域
                itemsXML = root.Elements("Mermories").Elements("Mermory");
                foreach (XElement item in itemsXML)
                {
                    string name   = item.Element("Name").Value;
                    int    Length = item.Element("Length").Value.ToInt();
                    Mermories[name] = Length;
                }

                S7CPUPath = root.Element("S7CPU").Element("Path").Value;

                //S7Clients
                itemsXML = root.Elements("S7Clients").Elements("S7Client");
                foreach (XElement item in itemsXML)
                {
                    string      name   = item.Element("Name").Value;
                    YZXS7Client client =
                        item.Element("XML").Value.XmlDeserializeFromString <YZXS7Client>();


                    S7Clients[name] = client;
                }

                //模块
                itemsXML = root.Elements("Units").Elements("Unit");
                foreach (XElement item in itemsXML)
                {
                    string xml = item.Element("XML").Value;
                    switch (item.Element("Type").Value)
                    {
                    case "Random":
                        RandomUnit ru = xml.XmlDeserializeFromString <RandomUnit>();
                        Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.Random, ru));
                        break;

                    case "ModbusTCP":
                        ModbusTCPUnit mu = xml.XmlDeserializeFromString <ModbusTCPUnit>();
                        Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.ModbusTCP, mu));
                        break;

                    case "Snap7ClientDB":
                        Snap7ClientDBUnit du = xml.XmlDeserializeFromString <Snap7ClientDBUnit>();
                        Units.Add(new Tuple <YZXUnitTypes, YZXUnit>(YZXUnitTypes.Snap7ClientDB, du));
                        break;
                    }
                }

                //映射
                itemsXML = root.Elements("Maps").Elements("Map");
                foreach (XElement item in itemsXML)
                {
                    string unit   = item.Element("Unit").Value;
                    string memory = item.Element("Memory").Value;
                    ushort begin  = item.Element("Begin").Value.ToUInt16();
                    ushort length = item.Element("Length").Value.ToUInt16();

                    YZXUnitMemoryMap map = new YZXUnitMemoryMap(unit, memory, begin, length);

                    Maps.Add(map);
                }

                //任务
                itemsXML = root.Elements("Tasks").Elements("Task");
                foreach (XElement item in itemsXML)
                {
                    string xml = item.Element("XML").Value;
                    switch (item.Element("Type").Value)
                    {
                    case "IronPython":
                        IronPythonTask ru = xml.XmlDeserializeFromString <IronPythonTask>();
                        Tasks.Add(new Tuple <YZXTaskTypes, YZXTask>(YZXTaskTypes.IronPython, ru));
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.StackTrace, e.Message,
                                MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }