using IMCS.DefaultList; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using YG; namespace IMCS.UControl { public partial class UserControl1 : UserControl { bool Run = false; short StartIndex = 0; short EndIndex = 0; IMCS.Logic.WeiLiHandle weiLi; public System.ComponentModel.BindingList CurrentTask = new BindingList(); public UserControl1() { InitializeComponent(); this.Load += UserControl1_Load; } bool isRun = false; private void UserControl1_Load(object sender, EventArgs e) { //weiLi = new Logic.WeiLiHandle(); //weiLi.DeviceInit(); //weiLi.DeviceStart(); // weiLi.Msg += WeiLi_Msg; // CurrentTask = DeviceConfig.Instance.WeiLiTask; //foreach (control cc in this.tablelayoutpanel1.controls) //{ // if (cc is label) // { // label lb = (label)cc; // if (!lb.text.equals("控制机柜")) // { // lb.allowdrop = true; // lb.mousedown += new mouseeventhandler(lb_mousedown1); // lb.dragenter += new drageventhandler(label_dragenter); // lb.dragdrop += new drageventhandler(label_dragdrop); // lb.backcolor = system.drawing.color.aliceblue; // lb.textalign = system.drawing.contentalignment.middlecenter; // lb.autosize = false; // lb.width = 60; // lb.height = 60; // } // } //} //task.factory.startnew(async () => //{ // while (true && !isrun) // { // await task.delay(100); // if (currenttask.where(m => !m.task_gameover).count() > 0) // { // currenttask.where(m => !m.task_gameover).firstordefault().firstordefaultyg((t) => // { // if (!t.task_send) // { // write_plc((short)t.task_index, t.task_startindex, t.task_endindex, t.task_operation); // t.task_send = true; // } // }); // } // } //}); } private void WeiLi_Msg(string obje1, string obje2, string obje3) { System.Console.WriteLine($"{obje1}-->>{obje2}-->{obje3}"); if (obje3.Length - obje3.Replace(",", "").Length != 1) { MessageBox.Show("接受到的值解析出现问题"); return; } string[] vs = obje3.Split(new string[] { "," }, StringSplitOptions.None); short state = vs[1].ObjectToShort(); CurrentTask.Where(m => m.Task_Index.Equals(vs[0].StringToInt())).FirstOrDefault().FirstOrDefaultYG((t) => { if (t.Task_Type.Equals(TaskType.取) && state == 3) { t.Task_GameOver = true; } else if (t.Task_Type.Equals(TaskType.放) && state == 6) { t.Task_GameOver = true; } else if (t.Task_Type.Equals(TaskType.移动) && state == 8) { t.Task_GameOver = true; } t.Task_RunState = state; }); } private void Lb_MouseDown1(object sender, MouseEventArgs e) { Label startlable = sender as Label; if ((e.Button == System.Windows.Forms.MouseButtons.Left)) { startlable.DoDragDrop(startlable, DragDropEffects.Copy | DragDropEffects.Move); //形成拖拽效果,移动+拷贝的组合效果 } } private void Label_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void Write_Plc(short taskid, short start, short end, short operatio) { weiLi.DeviceSend("DB200.44", taskid); weiLi.DeviceSend("DB200.46", start); weiLi.DeviceSend("DB200.48", end); weiLi.DeviceSend("DB200.50", operatio); } private void Label_DragDrop(object sender, DragEventArgs e) { Label lb = (Label)sender; EndIndex = (short)lb.Tag.ObjectToInt(); var cc = (Label)e.Data.GetData(typeof(Label)); StartIndex = cc.Tag.ObjectToShort(); Run = false; int currentTaskCount = CurrentTask.Where(m => m.Task_StartIndex.Equals(StartIndex) && m.Task_EndIndex.Equals(EndIndex) && m.Task_GameOver).Count(); if (currentTaskCount > 0) { System.Windows.Forms.MessageBox.Show("当前任务列表中存在和拖拽内容相似的任务,当前拖拽不执行"); } else { short item = 0; if (StartIndex.Equals(124) || StartIndex.Equals(125)) { CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 7, Task_Type = TaskType.移动, Task_StartIndex = StartIndex }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 1, Task_StartIndex = StartIndex, Task_Type = TaskType.取 }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 4, Task_StartIndex = StartIndex, Task_Type = TaskType.放 }); } else if (EndIndex.Equals(124) || EndIndex.Equals(125)) { CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = StartIndex, Task_Operation = 7, Task_Type = TaskType.移动, Task_StartIndex = StartIndex }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 1, Task_StartIndex = StartIndex, Task_Type = TaskType.取 }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 4, Task_StartIndex = StartIndex, Task_Type = TaskType.放 }); } else { CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = StartIndex, Task_Operation = 7, Task_Type = TaskType.移动, Task_StartIndex = StartIndex }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 1, Task_StartIndex = StartIndex, Task_Type = TaskType.取 }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = 124, Task_Operation = 4, Task_StartIndex = StartIndex, Task_Type = TaskType.放 }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 7, Task_Type = TaskType.移动, Task_StartIndex = StartIndex }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 1, Task_StartIndex = 124, Task_Type = TaskType.取 }); CurrentTask.Add(new WeiLiTaskDefaultList() { Task_Index = CurrentTask.Count + 1, Task_EndIndex = EndIndex, Task_Operation = 4, Task_StartIndex = StartIndex, Task_Type = TaskType.放 }); } } } } }