using FryPot_DosingSystem.AGV; 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 { /// /// AGV 视图 /// public class AgvViewModel : ObservableObject { #region 单例模式 private volatile static AgvViewModel _Instance; public static AgvViewModel GetInstance() => _Instance ?? (_Instance = new AgvViewModel()); public int RollerNum { get { return _rollerNum; } set { _rollerNum = value;OnPropertyChanged(); } } private int _rollerNum; public AgvViewModel() { Init(); } #endregion #region 私有函数 public void Init() { //初始化车辆控制 cartModel_1 = new CartModel(); 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="取蛋" } }; } public void SetCleanRollerNum(int num) { RollerNum = num; } /// /// 设置停车桩或充电桩 /// /// 设置哪一个停车桩: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) { } } /// /// 小车停止 /// /// 默认: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) { } } /// /// 启动或停止炒锅 /// /// 默认:1 2 3 4 5,代表五个炒锅 /// public void Set启动或停止炒锅(int id, IsRun mode) { try { switch (id) { case 1: wokModel_1.isRun= mode; break; case 2: wokModel_2.isRun = mode; break; case 3: wokModel_3.isRun = mode; break; case 4: wokModel_4.isRun = mode; break; case 5: wokModel_5.isRun = mode; break; } } catch (Exception ex) { } } #endregion #region 其他函数 /// /// 获取所有命令 /// 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个滚筒线控制 /// /// 一号滚筒线 /// private RollerLinesModel _RollerLines_1; public RollerLinesModel RollerLines_1 { get { return _RollerLines_1; } set { if (_RollerLines_1 == value) return; _RollerLines_1 = value; OnPropertyChanged("RollerLines_1"); } } /// /// 二号滚筒线 /// private RollerLinesModel _RollerLines_2; public RollerLinesModel RollerLines_2 { get { return _RollerLines_2; } set { if (_RollerLines_2 == value) return; _RollerLines_2 = value; OnPropertyChanged("RollerLines_2"); } } /// /// 三号滚筒线 /// private RollerLinesModel _RollerLines_3; public RollerLinesModel RollerLines_3 { get { return _RollerLines_3; } set { if (_RollerLines_3 == value) return; _RollerLines_3 = value; OnPropertyChanged("RollerLines_3"); } } /// /// 四号滚筒线 /// private RollerLinesModel _RollerLines_4; public RollerLinesModel RollerLines_4 { get { return _RollerLines_4; } set { if (_RollerLines_4 == value) return; _RollerLines_4 = value; OnPropertyChanged("RollerLines_4"); } } #endregion #region 4个运动小车控制 /// /// 一号车控制 /// private CartModel _cartModel_1; public CartModel cartModel_1 { get { return _cartModel_1; } set { if (_cartModel_1 == value) return; _cartModel_1 = value; OnPropertyChanged("cartModel_1"); } } /// /// 二号车控制 /// private CartModel _cartModel_2; public CartModel cartModel_2 { get { return _cartModel_2; } set { if (_cartModel_2 == value) return; _cartModel_2 = value; OnPropertyChanged("cartModel_2"); } } /// /// 三号车控制 /// private CartModel _cartModel_3; public CartModel cartModel_3 { get { return _cartModel_3; } set { if (_cartModel_3 == value) return; _cartModel_3 = value; OnPropertyChanged("cartModel_3"); } } /// /// 四号车控制 /// private CartModel _cartModel_4; public CartModel cartModel_4 { get { return _cartModel_4; } set { if (_cartModel_4 == value) return; _cartModel_4 = value; OnPropertyChanged("cartModel_4"); } } #endregion #region 6个停车桩控制 /// /// 一号停车装 /// private ParkingPileModel _ParkingPileModel_1; public ParkingPileModel ParkingPileModel_1 { get { return _ParkingPileModel_1; } set { if (_ParkingPileModel_1 == value) return; _ParkingPileModel_1 = value; OnPropertyChanged("ParkingPileModel_1"); } } /// /// 二号停车装 /// private ParkingPileModel _ParkingPileModel_2; public ParkingPileModel ParkingPileModel_2 { get { return _ParkingPileModel_2; } set { if (_ParkingPileModel_2 == value) return; _ParkingPileModel_2 = value; OnPropertyChanged("ParkingPileModel_2"); } } /// /// 三号停车装 /// private ParkingPileModel _ParkingPileModel_3; public ParkingPileModel ParkingPileModel_3 { get { return _ParkingPileModel_3; } set { if (_ParkingPileModel_3 == value) return; _ParkingPileModel_3 = value; OnPropertyChanged("ParkingPileModel_3"); } } /// /// 四号停车装 /// private ParkingPileModel _ParkingPileModel_4; public ParkingPileModel ParkingPileModel_4 { get { return _ParkingPileModel_4; } set { if (_ParkingPileModel_4 == value) return; _ParkingPileModel_4 = value; OnPropertyChanged("ParkingPileModel_4"); } } /// /// 五号停车装 /// private ParkingPileModel _ParkingPileModel_5; public ParkingPileModel ParkingPileModel_5 { get { return _ParkingPileModel_5; } set { if (_ParkingPileModel_5 == value) return; _ParkingPileModel_5 = value; OnPropertyChanged("ParkingPileModel_5"); } } /// /// 六号停车装 /// private ParkingPileModel _ParkingPileModel_6; public ParkingPileModel ParkingPileModel_6 { get { return _ParkingPileModel_6; } set { if (_ParkingPileModel_6 == value) return; _ParkingPileModel_6 = value; OnPropertyChanged("ParkingPileModel_6"); } } #endregion #region 5个炒锅流程控制 /// /// 一号炒锅工作流程 /// private WokModel _wokModel_1; public WokModel wokModel_1 { get { if (_wokModel_1 == null) { _wokModel_1 = new WokModel(); } 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 } /// /// 小车控制Model /// public class CartModel : ObservableObject { /// /// 车上是否有物品 /// private IsBool _isBool = IsBool.No; public IsBool isBool { get { return _isBool; } set { _isBool = value; Text = _isBool.ToString(); OnPropertyChanged("isBool"); } } /// /// 车运动轨迹方式 /// private CartMotionTrajectory _cartMotionTrajectory = CartMotionTrajectory.Stop; public CartMotionTrajectory cartMotionTrajectory { get { return _cartMotionTrajectory; } set { _cartMotionTrajectory = value; Tag = _cartMotionTrajectory.ToString(); OnPropertyChanged("cartMotionTrajectory"); } } private string _Text = IsBool.No.ToString(); public string Text { get { return _Text; } set { _Text = value; OnPropertyChanged("Text"); } } private string _Tag = CartMotionTrajectory.Stop.ToString(); public string Tag { get { return _Tag; } set { _Tag = value; OnPropertyChanged("Tag"); } } } /// /// 停车装控制 /// public class ParkingPileModel : ObservableObject { /// /// 是否有小车 /// private IsBool _isBool = IsBool.No; public IsBool isBool { get { return _isBool; } set { _isBool = value; Text = _isBool.ToString(); OnPropertyChanged("isBool"); } } private string _Text = IsBool.No.ToString(); public string Text { get { return _Text; } set { _Text = value; OnPropertyChanged("Text"); } } } /// /// 滚筒线控制 /// public class RollerLinesModel : ObservableObject { /// /// 是否运行 /// private IsRun _isRun = IsRun.Stop; public IsRun isRun { get { return _isRun; } set { _isRun = value; Text = _isRun.ToString(); OnPropertyChanged("isBool"); } } /// /// 滚筒线上面的数量 /// private string _DishesNum = "8"; public string DishesNum { get { return _DishesNum; } set { _DishesNum = value; if (!string.IsNullOrEmpty(_DishesNum)) { int count = 1; try { count = int.Parse(_DishesNum); if (count >= 0 && count <= 8) { _DishesNum = count.ToString(); } else _DishesNum = 8.ToString(); } catch (Exception ex) { _DishesNum = 8.ToString(); } } OnPropertyChanged("DishesNum"); } } private string _Text = IsRun.Stop.ToString(); public string Text { get { return _Text; } set { _Text = value; OnPropertyChanged("Text"); } } } /// /// 炒锅 流程控制 /// 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 IsRun _isRun = IsRun.Stop; public IsRun isRun { get { return _isRun; } set { _isRun = value; Text = _isRun.ToString(); OnPropertyChanged("isBool"); } } private string _Text = IsRun.Stop.ToString(); public string Text { get { return _Text; } set { _Text = value; OnPropertyChanged("Text"); } } /// /// 工作流程 /// 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; } } }