From 2cade5cbd92876d5f1078a3002c1c65b14732617 Mon Sep 17 00:00:00 2001 From: fyf Date: Fri, 8 Jul 2022 12:39:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0agv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Themes/MyStyle.xaml | 10 +- FryPot_DosingSystem/View/AgvView.xaml | 202 +++++- FryPot_DosingSystem/View/AgvView.xaml.cs | 157 ++++- FryPot_DosingSystem/ViewModel/AgvViewModel.cs | 589 +++++++++++++++++- 4 files changed, 894 insertions(+), 64 deletions(-) diff --git a/BPASmartClient.CustomResource/Themes/MyStyle.xaml b/BPASmartClient.CustomResource/Themes/MyStyle.xaml index 535552ab..9bbfa71b 100644 --- a/BPASmartClient.CustomResource/Themes/MyStyle.xaml +++ b/BPASmartClient.CustomResource/Themes/MyStyle.xaml @@ -172,6 +172,13 @@ + diff --git a/FryPot_DosingSystem/View/AgvView.xaml b/FryPot_DosingSystem/View/AgvView.xaml index 3c826bbe..46863cb7 100644 --- a/FryPot_DosingSystem/View/AgvView.xaml +++ b/FryPot_DosingSystem/View/AgvView.xaml @@ -851,8 +851,8 @@ - - + + @@ -1096,21 +1096,50 @@ - - - - - - + + 停车桩测试 + 1 + + + + + + 料筒控制 + 1 + + + + + + 设置物料 + 1 + 1 + + + + + + 小车测试 + 1 + + + + + + + 小车?物品 + 1 + + - + @@ -1235,18 +1264,155 @@ 炒锅(5)号 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 满料桶滚筒线 - (1)号 + (1)满料桶滚筒线 - (2)号 + (2)满料桶滚筒线 - (3)号 + (3)满料桶滚筒线 空桶滚筒线 @@ -1255,22 +1421,22 @@ - 停车桩(1号) + 停车桩(1号) - 停车桩(2号) + 停车桩(2号) - 停车桩(3号) + 停车桩(3号) - 停车桩(4号) + 停车桩(4号) - 充电桩(1号) + 充电桩(5号) - 充电桩(2号) + 充电桩(6号) diff --git a/FryPot_DosingSystem/View/AgvView.xaml.cs b/FryPot_DosingSystem/View/AgvView.xaml.cs index de598ba4..43e1283b 100644 --- a/FryPot_DosingSystem/View/AgvView.xaml.cs +++ b/FryPot_DosingSystem/View/AgvView.xaml.cs @@ -27,46 +27,135 @@ namespace FryPot_DosingSystem.View { InitializeComponent(); this.DataContext = AgvViewModel.GetInstance(); + 控制命令.ItemsSource = AgvViewModel.GetInstance().GetCommand(); } private void Button_Click(object sender, RoutedEventArgs e) { - // AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop; - AgvViewModel.GetInstance().ParkingPileModel_1.isBool = IsBool.No; - AgvViewModel.GetInstance().cartModel_1.isBool=IsBool.No; - AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.qc_1; + int id = 1; + if (sender is Button) + { + byte[] data; + bool istrue = false; + Button button = sender as Button; + if (button.Tag != null) + { + switch (button.Tag.ToString()) + { + case "设置有车": + try + { + id=int.Parse(tcz_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-5 的数字!"); + return; + } + AgvViewModel.GetInstance().Set停车桩(id, IsBool.Yes); + break; + case "设置无车": + + try + { + id = int.Parse(tcz_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-5 的数字!"); + return; + } + AgvViewModel.GetInstance().Set停车桩(id, IsBool.No); + break; + case "启动": + try + { + id = int.Parse(liaotong_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-5 的数字!"); + return; + } + AgvViewModel.GetInstance().Set滚筒线状态(id, IsRun.Start); + break; + case "停止": + try + { + id = int.Parse(liaotong_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-5 的数字!"); + return; + } + AgvViewModel.GetInstance().Set滚筒线状态(id, IsRun.Stop); + break; + case "设置物料": + try + { + id = int.Parse(liaotongwuliao_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-8 的数字!"); + return; + } + AgvViewModel.GetInstance().Set滚筒线上数量(id, liaotongwuliaoshuliang_text.Text); + break; + case "小车停止": + try + { + id = int.Parse(xiaoche_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-4 的数字!"); + return; + } + AgvViewModel.GetInstance().Set小车停止(id); + break; + case "运行小车": + try + { + id = int.Parse(xiaoche_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-4 的数字!"); + return; + } + AgvViewModel.GetInstance().Set小车运动(id, AgvViewModel.GetInstance().GetCommandValue(控制命令.Text)); + break; + case "有物品": + try + { + id = int.Parse(xiaochewuping_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-4 的数字!"); + return; + } + AgvViewModel.GetInstance().Set小车是否承载物品(id, IsBool.Yes); + break; + case "无物品": + try + { + id = int.Parse(xiaochewuping_text.Text.ToString()); + } + catch (Exception ex) + { + MessageBox.Show("只能输入 1-4 的数字!"); + return; + } + AgvViewModel.GetInstance().Set小车是否承载物品(id, IsBool.No); + break; - + } + } + } } - private void Button_Click_1(object sender, RoutedEventArgs e) - { - AgvViewModel.GetInstance().RollerLines_1.isRun = IsRun.Start; - } - - private void StopButton_Click(object sender, RoutedEventArgs e) - { - AgvViewModel.GetInstance().RollerLines_1.isRun = IsRun.Stop; - AgvViewModel.GetInstance().cartModel_1.isBool = IsBool.Yes; - AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.yc_1_1; - } - - private void Button_Click_2(object sender, RoutedEventArgs e) - { - AgvViewModel.GetInstance().cartModel_1.isBool = IsBool.No; - AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.hs_1; - } - - private void Button_Click_3(object sender, RoutedEventArgs e) - { - AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.hj; - AgvViewModel.GetInstance().ParkingPileModel_1.isBool = IsBool.Yes; - } - - private void Button_Click_4(object sender, RoutedEventArgs e) - { - AgvViewModel.GetInstance().cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop; - - } } } diff --git a/FryPot_DosingSystem/ViewModel/AgvViewModel.cs b/FryPot_DosingSystem/ViewModel/AgvViewModel.cs index c6a29caf..7614df65 100644 --- a/FryPot_DosingSystem/ViewModel/AgvViewModel.cs +++ b/FryPot_DosingSystem/ViewModel/AgvViewModel.cs @@ -2,9 +2,12 @@ using Microsoft.Toolkit.Mvvm.ComponentModel; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; +using System.Windows; namespace FryPot_DosingSystem.ViewModel { @@ -30,25 +33,304 @@ namespace FryPot_DosingSystem.ViewModel cartModel_2 = new CartModel(); cartModel_3 = new CartModel(); cartModel_4 = new CartModel(); - + //初始化滚筒线 RollerLines_1 = new RollerLinesModel(); RollerLines_2 = new RollerLinesModel(); RollerLines_3 = new RollerLinesModel(); RollerLines_4 = new RollerLinesModel(); - + //初始化停车桩 ParkingPileModel_1 = new ParkingPileModel { isBool = IsBool.Yes }; ParkingPileModel_2 = new ParkingPileModel { isBool = IsBool.Yes }; ParkingPileModel_3 = new ParkingPileModel { isBool = IsBool.Yes }; ParkingPileModel_4 = new ParkingPileModel { isBool = IsBool.Yes }; ParkingPileModel_5 = new ParkingPileModel { isBool = IsBool.No }; ParkingPileModel_6 = new ParkingPileModel { isBool = IsBool.No }; + //初始化炒锅 + wokModel_1 = new WokModel(); + wokModel_2 = new WokModel(); + wokModel_3 = new WokModel(); + wokModel_4 = new WokModel(); + wokModel_5 = new WokModel(); + Test(); + } + #endregion + #region 公共调用函数 + public void Test() + { RollerLines_2.DishesNum = "3"; + + + wokModel_1.goodsName = "番茄炒蛋"; + wokModel_1.workflows = new ObservableCollection + { + new WorkflowModel {id=1,Name="取番茄",isBool= IsBool.Yes}, + new WorkflowModel {id=2,Name="取蛋" } }; } - #endregion + /// + /// 设置停车桩或充电桩 + /// + /// 设置哪一个停车桩:1 2 3(5 6 为充电桩) + /// 是否有小车 + public void Set停车桩(int id, IsBool isBool) + { + try + { + switch (id) + { + case 1: + ParkingPileModel_1.isBool = isBool; + break; + case 2: + ParkingPileModel_2.isBool = isBool; + break; + case 3: + ParkingPileModel_3.isBool = isBool; + break; + case 4: + ParkingPileModel_4.isBool = isBool; + break; + case 5: + ParkingPileModel_5.isBool = isBool; + break; + case 6: + ParkingPileModel_6.isBool = isBool; + break; + } + + } + catch (Exception ex) + { - #region 公共函数 + } + } + /// + /// 小车停止 + /// + /// 默认:1 2 3 4,代表四辆车 + public void Set小车停止(int id) + { + try + { + switch (id) + { + case 1: + cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop; + break; + case 2: + cartModel_2.cartMotionTrajectory = CartMotionTrajectory.Stop; + break; + case 3: + cartModel_3.cartMotionTrajectory = CartMotionTrajectory.Stop; + break; + case 4: + cartModel_4.cartMotionTrajectory = CartMotionTrajectory.Stop; + break; + } + + } + catch (Exception ex) + { + + } + } + /// + /// 控制小车运行 + /// + /// 默认:1 2 3 4,代表四辆车 + /// + public void Set小车运动(int id, CartMotionTrajectory cart) + { + try + { + switch (id) + { + case 1: + cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop; + Thread.Sleep(10); + cartModel_1.cartMotionTrajectory = cart; + break; + case 2: + cartModel_2.cartMotionTrajectory = CartMotionTrajectory.Stop; + Thread.Sleep(10); + cartModel_2.cartMotionTrajectory = cart; + break; + case 3: + cartModel_3.cartMotionTrajectory = CartMotionTrajectory.Stop; + Thread.Sleep(10); + cartModel_3.cartMotionTrajectory = cart; + break; + case 4: + cartModel_4.cartMotionTrajectory = CartMotionTrajectory.Stop; + Thread.Sleep(10); + cartModel_4.cartMotionTrajectory = cart; + break; + } + + } + catch (Exception ex) + { + + } + } + /// + /// 小车是否承载物品 + /// + /// 默认:1 2 3 4,代表四辆车 + /// + public void Set小车是否承载物品(int id, IsBool cart) + { + try + { + switch (id) + { + case 1: + cartModel_1.isBool = cart; + break; + case 2: + cartModel_2.isBool = cart; + break; + case 3: + cartModel_3.isBool = cart; + break; + case 4: + cartModel_4.isBool = cart; + break; + } + + } + catch (Exception ex) + { + + } + } + /// + /// 小车是否承载物品 + /// + /// 默认:1 2 3 4,代表四条滚筒线,(4 代表空桶线) + /// + public void Set滚筒线状态(int id, IsRun cart) + { + try + { + switch (id) + { + case 1: + RollerLines_1.isRun = cart; + break; + case 2: + RollerLines_2.isRun = cart; + break; + case 3: + RollerLines_3.isRun = cart; + break; + case 4: + RollerLines_4.isRun = cart; + break; + } + + } + catch (Exception ex) + { + + } + } + /// + /// 滚筒线上数量 + /// + /// 默认:1 2 3 4,代表四条滚筒线,(4 代表空桶线) + /// 默认: 1 - 8,最多承载 8个菜品或者8个空碗 + public void Set滚筒线上数量(int id, string cart) + { + try + { + switch (id) + { + case 1: + RollerLines_1.DishesNum = cart; + break; + case 2: + RollerLines_2.DishesNum = cart; + break; + case 3: + RollerLines_3.DishesNum = cart; + break; + case 4: + RollerLines_4.DishesNum = cart; + break; + } + } + catch (Exception ex) + { + + } + } + /// + /// 设置炒锅显示流程 + /// + /// 默认:1 2 3 4 5,代表五个炒锅 + /// + public void Set炒锅显示流程(int id, WokModel mode) + { + try + { + switch (id) + { + case 1: + wokModel_1=mode; + break; + case 2: + wokModel_2 = mode; + break; + case 3: + wokModel_3 = mode; + break; + case 4: + wokModel_4 = mode; + break; + case 5: + wokModel_5 = mode; + break; + } + + } + catch (Exception ex) + { + + } + } + + /// + /// 获取所有命令 + /// + public List GetCommand() + { + List vs = new List(); + try + { + vs = System.Enum.GetNames(typeof(CartMotionTrajectory))?.ToList(); + } + catch (Exception ex) + { + return vs; + } + return vs; + } + /// + /// 根据命令获取值 + /// + public CartMotionTrajectory GetCommandValue(string name) + { + return ToEnumValue(name); + } + /// + /// 根据枚举名称获取枚举值 + /// + public T ToEnumValue(string name) + { + return (T)Enum.Parse(typeof(T), name); + } #endregion #region 4个滚筒线控制 @@ -312,6 +594,98 @@ namespace FryPot_DosingSystem.ViewModel } #endregion + #region 5个炒锅流程控制 + /// + /// 一号炒锅工作流程 + /// + private WokModel _wokModel_1; + public WokModel wokModel_1 + { + get + { + return _wokModel_1; + } + set + { + if (_wokModel_1 == value) + return; + _wokModel_1 = value; + OnPropertyChanged("wokModel_1"); + } + } + /// + /// 二号炒锅工作流程 + /// + private WokModel _wokModel_2; + public WokModel wokModel_2 + { + get + { + return _wokModel_2; + } + set + { + if (_wokModel_2 == value) + return; + _wokModel_2 = value; + OnPropertyChanged("wokModel_2"); + } + } + /// + /// 三号炒锅工作流程 + /// + private WokModel _wokModel_3; + public WokModel wokModel_3 + { + get + { + return _wokModel_3; + } + set + { + if (_wokModel_3 == value) + return; + _wokModel_3 = value; + OnPropertyChanged("wokModel_3"); + } + } + /// + /// 四号炒锅工作流程 + /// + private WokModel _wokModel_4; + public WokModel wokModel_4 + { + get + { + return _wokModel_4; + } + set + { + if (_wokModel_4 == value) + return; + _wokModel_4 = value; + OnPropertyChanged("wokModel_4"); + } + } + /// + /// 五号炒锅工作流程 + /// + private WokModel _wokModel_5; + public WokModel wokModel_5 + { + get + { + return _wokModel_5; + } + set + { + if (_wokModel_5 == value) + return; + _wokModel_5 = value; + OnPropertyChanged("wokModel_5"); + } + } + #endregion } /// @@ -319,7 +693,6 @@ namespace FryPot_DosingSystem.ViewModel /// public class CartModel : ObservableObject { - /// /// 车上是否有物品 /// @@ -333,11 +706,10 @@ namespace FryPot_DosingSystem.ViewModel set { _isBool = value; - Text= _isBool.ToString(); + Text = _isBool.ToString(); OnPropertyChanged("isBool"); } } - /// /// 车运动轨迹方式 /// @@ -351,7 +723,7 @@ namespace FryPot_DosingSystem.ViewModel set { _cartMotionTrajectory = value; - Tag= _cartMotionTrajectory.ToString(); + Tag = _cartMotionTrajectory.ToString(); OnPropertyChanged("cartMotionTrajectory"); } } @@ -437,7 +809,7 @@ namespace FryPot_DosingSystem.ViewModel set { _isRun = value; - Text= _isRun.ToString(); + Text = _isRun.ToString(); OnPropertyChanged("isBool"); } } @@ -475,8 +847,6 @@ namespace FryPot_DosingSystem.ViewModel OnPropertyChanged("DishesNum"); } } - - private string _Text = IsRun.Stop.ToString(); public string Text { @@ -491,6 +861,203 @@ namespace FryPot_DosingSystem.ViewModel } } } + /// + /// 炒锅 流程控制 + /// + public class WokModel : ObservableObject + { + /// + /// id + /// + private string _id; + public string id + { + get + { + return _id; + } + set + { + _id = value; + OnPropertyChanged("id"); + } + } + /// + /// 订单id + /// + private string _orderID; + public string orderID + { + get + { + return _orderID; + } + set + { + _orderID = value; + OnPropertyChanged("orderID"); + } + } + /// + /// 商品名称 + /// + private string _goodsName; + public string goodsName + { + get + { + return _goodsName; + } + set + { + _goodsName = value; + OnPropertyChanged("goodsName"); + } + } + /// + /// 其他信息 + /// + private string _other; + public string other + { + get + { + return _other; + } + set + { + _other = value; + OnPropertyChanged("other"); + } + } + /// + /// 工作流程 + /// + private ObservableCollection _workflows = new ObservableCollection(); + public ObservableCollection workflows + { + get + { + return _workflows; + } + set + { + _workflows = value; + OnPropertyChanged("workflows"); + } + } + public WokModel() + { + id = Guid.NewGuid().ToString(); + workflows = new ObservableCollection(); + } + } + /// + /// 工作流程 + /// + public class WorkflowModel : ObservableObject + { + /// + /// 序号默认:1-10 + /// + private int _id=1; + public int id + { + get + { + return _id; + } + set + { + _id = value; + xh = GetXH.ID(_id); + OnPropertyChanged("id"); + } + } + /// + /// 名称 + /// + private string _Name; + public string Name + { + get + { + return _Name; + } + set + { + _Name = value; + OnPropertyChanged("Name"); + } + } + /// + /// 是否已完成当前步骤 + /// + private IsBool _isBool = IsBool.No; + public IsBool isBool + { + get + { + return _isBool; + } + set + { + _isBool = value; + if (_isBool == IsBool.Yes) + { + visibility = Visibility.Visible; + } + else + { + visibility = Visibility.Collapsed; + } + OnPropertyChanged("isBool"); + } + } + private Visibility _visibility = Visibility.Collapsed; + public Visibility visibility + { + get + { + return _visibility; + } + set + { + _visibility = value; + OnPropertyChanged("visibility"); + } + } + private string _xh; + public string xh + { + get + { + return _xh; + } + set + { + _xh = value; + OnPropertyChanged("xh"); + } + } + } + /// + /// 获取序号 + /// + static class GetXH + { + //①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ + public static string ID(int i) + { + string strbu = "① "; + string str = "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿"; + if (i <= 50) + { + strbu= str.Substring(i-1, 1)+" "; + } + return strbu; + } + } }