Beispiel #1
0
        void _server_MessageReceived(object sender, SocketLibrary.SocketBase.MessageEventArgs e)
        {
            System.Console.WriteLine("收到调试信息:" + e.Message.MessageBody);

            try
            {
                SpeakerLibrary.Message.DebugMessage dm = SpeakerLibrary.Message.DebugMessage.FromJson(e.Message.MessageBody);
                switch (dm.Command)
                {
                case CommandConst.ActionRun:
                    //动作记录
                    ActionObject ao = ((Newtonsoft.Json.Linq.JToken)dm.Content).ToObject <ActionObject>();
                    //入队
                    TaskQueues.Enqueue(new DebugActionQueueObject(e.Connecction.ConnectionName, dm.MsgId, ao));
                    break;

                case CommandConst.UploadDataBase:
                    //更新动作库
                    UpdateDB(dm);
                    break;
                }

                //发送回复
                SendMessage(e.Connecction, dm);
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
            }
        }
Beispiel #2
0
        private static bool deleteFromTaskq(TaskQueues ques, string code)
        {
            var a = deleteFromque(ques.CacheQ, code);
            var b = deleteFromque(ques.LableUpQ, code);
            var c = deleteFromque(ques.WeighQ, code);
            var d = deleteFromque(ques.CatchAQ, code);
            var e = deleteFromque(ques.CatchBQ, code);
            var f = deleteFromque(ques.RobotRollAQ, code);
            var g = deleteFromque(ques.RobotRollBQ, code);
            var h = deleteFromCache(ques.CacheSide, code);

            return(a || b || c || d || e || f || g);
        }
        private void checkInqueues(string code, TaskQueues ques)
        {
            var qlabels = new List <Queue <LableCode> > {
                ques.CacheQ, ques.LableUpQ, ques.WeighQ, ques.CatchAQ,
                ques.CatchBQ, ques.CatchBQ
            };
            var qrolls = new List <Queue <RollPosition> > {
                ques.RobotRollAQ, ques.RobotRollBQ
            };

            var rt = new List <LableCode>();

            foreach (var item in qlabels)
            {
                var tmp = item.Where(x => x.LCode == code).ToArray();
                rt.AddRange(tmp);
            }

            var rr = new List <RollPosition>();

            foreach (var item in qrolls)
            {
                var tmp = item.Where(x => x.LabelCode == code);
                rr.AddRange(tmp);
            }

            var rb = from item in ques.CacheSide
                     where item.labelcode != null && item.labelcode.LCode == code
                     select item;

            if (rt.Count == 0 && rr.Count == 0 && rb.Count() == 0)
            {
                lbxLog.Items.Insert(0, $"{lbxLog.Items.Count + 1} 线上、缓存位和机器人队列没有此号码: {code}。");
            }

            foreach (var item in rt)
            {
                lbxLog.Items.Insert(0, $"{lbxLog.Items.Count} 线上: {item.LCode} {item.ToLocation} {item.PanelNo}");
            }

            foreach (var item in rr)
            {
                lbxLog.Items.Insert(0, $"{lbxLog.Items.Count} 机器人号码队列: {item.LabelCode} {item.RealLocation}");
            }

            foreach (var item in rb)
            {
                lbxLog.Items.Insert(0, $"{lbxLog.Items.Count} 缓存位: {item.id} {item.labelcode.LCode} {item.labelcode.ToLocation}");
            }
        }
Beispiel #4
0
        void _debugActionWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!((BackgroundWorker)sender).CancellationPending)
            {
                try
                {
                    DebugActionQueueObject dao = null;
                    TaskQueues.TryDequeue(out dao);

                    if (dao != null && dao.ActionObj.Action.Name != null && dao.ActionObj.Action.Name.Length >= 1 && dao.ActionObj.StepList != null && dao.ActionObj.StepList.Length >= 1)
                    {
                        //有效任务
                        if (MainService.TaskService.RunMode == RunModeType.Debug)
                        {
                            //执行动作
                            MainService.TaskService.RunAction(dao.ActionObj.Action, new List <SpeakerLibrary.SportDB.Robot_Steps>(dao.ActionObj.StepList));

                            //发送回复
                            DebugMessage dm = new DebugMessage();
                            dm.Command = CommandConst.ActionRunFinish;
                            dm.Content = dao.MessageId;
                            SendMessage(dao.ConnectionName, dm);
                        }
                    }
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.ToString());
                }

                try
                {
                    Thread.Sleep(15);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.ToString());
                }
            }
        }
Beispiel #5
0
        public EditorTask Run()
        {
            if (isRunning)
            {
                throw new Exception("Task already run");
            }
            isRunning = true;
            TaskQueues.Add(this);
            Save();

            if (TaskQueues.Count > 0)
            {
                if (Application.isBatchMode)
                {
                    UpdateTask();
                }
                else
                {
                    EditorApplication.update -= UpdateTask;
                    EditorApplication.update += UpdateTask;
                }
            }
            return(this);
        }
Beispiel #6
0
        private static void UpdateTask()
        {
            if (isUpdateTask)
            {
                return;
            }

            isUpdateTask = true;
            try
            {
                for (int i = 0; CanExecute && i < TaskQueues.Count; i++)
                {
                    var queue = TaskQueues[i];
                    while (CanExecute)
                    {
                        TaskAction action = null;
                        switch (queue.status)
                        {
                        case Status.Initialize:
                            queue.onStarted.current = 0;
                            queue.onEnded.current   = 0;
                            queue.status            = Status.Started;
                            Save();
                            break;

                        case Status.Started:
                            while (queue.onStarted.HasNext())
                            {
                                queue.onStarted.Next().Callback();
                            }
                            queue.status = Status.Task;
                            Save();
                            break;

                        case Status.Task:
                            action = Next(queue.tasks);
                            if (action == null)
                            {
                                queue.status = Status.Ended;
                                Save();
                            }
                            else
                            {
                                queue.onTaskBefore.current = 0;
                                queue.onTaskAfter.current  = 0;
                            }
                            break;

                        default: break;
                        }

                        if (queue.status == Status.Ended)
                        {
                            TaskQueues.RemoveAt(i);
                            Save();
                            while (queue.onEnded.HasNext())
                            {
                                queue.onEnded.Next().Callback();
                            }
                            i--;
                            break;
                        }
                        if (action == null)
                        {
                            continue;
                        }
                        if (action.Callback != null)
                        {
                            bool showProgressBar = false;
                            try
                            {
                                if (queue.progressBarEnabled)
                                {
                                    EditorUtility.DisplayProgressBar(action.Display, null, 0);
                                    showProgressBar = true;
                                }

                                if (queue.status == Status.Task)
                                {
                                    while (queue.onTaskBefore.HasNext())
                                    {
                                        queue.onTaskBefore.Next().Callback();
                                    }
                                }
                                DateTime dt = DateTime.Now;
                                action.Callback();
                                Debug.Log(EditorOneBuild.BuildLogPrefix + "step " + queue.tasks.current + "/" + queue.tasks.Count + ", [" + action.Callback.Method.DeclaringType.FullName + "." + action.Callback.Method.Name + "] time: " + (DateTime.Now - dt).TotalSeconds.ToString("0.#") + "s");
                            }
                            catch (Exception ex)
                            {
                                Debug.LogError("build error " + action.Callback.Method.Name);
                                Debug.LogException(ex);
                                queue.status = Status.Ended;
                                Save();
                            }
                            finally
                            {
                                if (showProgressBar)
                                {
                                    showProgressBar = false;
                                    EditorUtility.ClearProgressBar();
                                }

                                if (queue.status == Status.Task)
                                {
                                    while (queue.onTaskAfter.HasNext())
                                    {
                                        queue.onTaskAfter.Next().Callback();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                isUpdateTask = false;
            }

            EditorApplication.update -= UpdateTask;
        }
Beispiel #7
0
 public void JobLoopPro(ref bool isrunning, TaskQueues taskq, Action onupdate)
 {
 }