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()); } }
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}"); } }
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()); } } }
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); }
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; }
public void JobLoopPro(ref bool isrunning, TaskQueues taskq, Action onupdate) { }