@@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.Device | |||||
{ | |||||
public class HardwareStatusAttribute : Attribute | |||||
{ | |||||
public HardwareStatusAttribute(string describe, string address) | |||||
{ | |||||
Describe = describe; | |||||
this.Address = address; | |||||
} | |||||
/// <summary> | |||||
/// 描述 | |||||
/// </summary> | |||||
public string Describe { get; set; } | |||||
/// <summary> | |||||
/// 地址 | |||||
/// </summary> | |||||
public string Address { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,15 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.Device | |||||
{ | |||||
/// <summary> | |||||
/// 硬件状态接口 | |||||
/// </summary> | |||||
public interface IHardwareStatus | |||||
{ | |||||
} | |||||
} |
@@ -0,0 +1,207 @@ | |||||
using BPASmartClient.Device; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM | |||||
{ | |||||
public class Alarm : IAlarm | |||||
{ | |||||
/// <summary> | |||||
/// 煮面机左侧低温报警 | |||||
/// PLC ---> M230.0 | |||||
/// ModbusTcp --> 1570 | |||||
/// </summary> | |||||
[Alarm("煮面机左侧低温报警")] | |||||
public bool MachineLeftLowTemperature { get; set; } | |||||
/// <summary> | |||||
/// 煮面机左侧低温报警 | |||||
/// PLC ---> M230.1 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("煮面机右侧低温报警")] | |||||
public bool MachineRightLowTemperature { get; set; } | |||||
/// <summary> | |||||
/// 供碗1缺碗 | |||||
/// PLC ---> 230.2 | |||||
/// ModbusTcp --> 1572 | |||||
/// </summary> | |||||
[Alarm("供碗1缺碗")] | |||||
public bool Supply1_LossBowl { get; set; } | |||||
/// <summary> | |||||
/// 供碗2缺碗 | |||||
/// PLC ---> M230.3 | |||||
/// ModbusTcp --> 1573 | |||||
/// </summary> | |||||
[Alarm("供碗2缺碗")] | |||||
public bool Supply2_LossBowl { get; set; } | |||||
/// <summary> | |||||
/// 供碗1出碗检测异常 | |||||
/// PLC ---> M230.4 | |||||
/// ModbusTcp --> 1574 | |||||
/// </summary> | |||||
[Alarm("供碗1出碗检测异常")] | |||||
public bool Supply1_ErrorOutBowl { get; set; } | |||||
/// <summary> | |||||
/// 供碗2出碗检测异常 | |||||
/// PLC ---> M230.5 | |||||
/// ModbusTcp --> 1575 | |||||
/// </summary> | |||||
[Alarm("供碗2出碗检测异常")] | |||||
public bool Supply2_ErrorOutBowl { get; set; } | |||||
/// <summary> | |||||
/// 推碗气缸故障 | |||||
/// PLC ---> M230.6 | |||||
/// ModbusTcp --> 1576 | |||||
/// </summary> | |||||
[Alarm("推碗气缸故障")] | |||||
public bool PushBowlCylinderError { get; set; } | |||||
/// <summary> | |||||
/// 煮面机通讯异常 | |||||
/// PLC ---> M230.7 | |||||
/// ModbusTcp --> 1577 | |||||
/// </summary> | |||||
[Alarm("煮面机通讯异常")] | |||||
public bool NoodleMacCommunicateError { get; set; } | |||||
/// <summary> | |||||
/// 配料机通讯异常 | |||||
/// PLC ---> M231.0 | |||||
/// ModbusTcp --> 1580 | |||||
/// </summary> | |||||
[Alarm("配料机通讯异常")] | |||||
public bool DosingMacCommunicateError { get; set; } | |||||
/// <summary> | |||||
/// 机器人通讯异常 | |||||
/// PLC ---> M231.1 | |||||
/// ModbusTcp --> 1581 | |||||
/// </summary> | |||||
[Alarm("机器人通讯异常")] | |||||
public bool RobotMacCommunicateError { get; set; } | |||||
/// <summary> | |||||
/// 机器人通讯异常 | |||||
/// PLC ---> M231.2 | |||||
/// ModbusTcp --> 1581 | |||||
/// </summary> | |||||
[Alarm("设备急停")] | |||||
public bool DeviceEstop { get; set; } | |||||
/// <summary> | |||||
/// PLC电池电压低 | |||||
/// PLC ---> M231.3 | |||||
/// ModbusTcp --> 1583 | |||||
/// </summary> | |||||
[Alarm("PLC电池电压低")] | |||||
public bool RobotInitError { get; set; } | |||||
/// <summary> | |||||
/// 机器人急停 | |||||
/// PLC ---> M231.4 | |||||
/// ModbusTcp --> 1584 | |||||
/// </summary> | |||||
[Alarm("机器人急停")] | |||||
public bool RobotUrgentStop { get; set; } | |||||
/// <summary> | |||||
/// 机器人不在远程模式 | |||||
/// PLC ---> M231.5 | |||||
/// ModbusTcp --> 1585 | |||||
/// </summary> | |||||
[Alarm("机器人不在远程模式")] | |||||
public bool RobotNotInRemoteMode { get; set; } | |||||
/// <summary> | |||||
/// 机器人伺服未就绪 | |||||
/// PLC ---> M231.6 | |||||
/// ModbusTcp --> 1586 | |||||
/// </summary> | |||||
[Alarm("机器人伺服未就绪")] | |||||
public bool RobotNotInReady { get; set; } | |||||
/// <summary> | |||||
/// 机器人本体异常 | |||||
/// PLC ---> M231.7 | |||||
/// ModbusTcp --> 1587 | |||||
/// </summary> | |||||
[Alarm("机器人本体异常")] | |||||
public bool RobotSelfInException { get; set; } | |||||
/// <summary> | |||||
/// 煮面机左侧缺水 | |||||
/// PLC ---> M232.0 | |||||
/// ModbusTcp --> 1570 | |||||
/// </summary> | |||||
[Alarm("煮面机左侧缺水报警")] | |||||
public bool LeftLackWater { get; set; } | |||||
/// <summary> | |||||
/// 煮面机右侧缺水 | |||||
/// PLC ---> M232.1 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("煮面机右侧缺水报警")] | |||||
public bool RightLackWater { get; set; } | |||||
/// <summary> | |||||
/// 丝杆初始化失败 | |||||
/// PLC ---> M232.2 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("丝杆初始化失败")] | |||||
public bool SvrewInitFail { get; set; } | |||||
/// <summary> | |||||
/// 转盘初始化失败 | |||||
/// PLC ---> M232.3 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("转盘初始化失败")] | |||||
public bool TurntableInitFail { get; set; } | |||||
/// <summary> | |||||
/// 机器人初始化失败 | |||||
/// PLC ---> M232.4 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("机器人初始化失败")] | |||||
public bool RobotInitFail { get; set; } | |||||
/// <summary> | |||||
/// 煮面机初始化失败 | |||||
/// PLC ---> M232.5 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("煮面机初始化失败")] | |||||
public bool NoodleCookerInitFail { get; set; } | |||||
/// <summary> | |||||
/// 推碗1步进推杆初始化失败 | |||||
/// PLC ---> M232.6 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("推碗1步进推杆初始化失败")] | |||||
public bool PushBowlInitFail1 { get; set; } | |||||
/// <summary> | |||||
/// 推碗2步进推杆初始化失败 | |||||
/// PLC ---> M232.7 | |||||
/// ModbusTcp --> 1571 | |||||
/// </summary> | |||||
[Alarm("推碗2步进推杆初始化失败")] | |||||
public bool PushBowlInitFail2 { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,40 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>net6.0-windows</TargetFramework> | |||||
<Nullable>enable</Nullable> | |||||
<UseWPF>true</UseWPF> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Update="View\Debug.xaml.cs"> | |||||
<SubType>Code</SubType> | |||||
</Compile> | |||||
<Compile Update="View\Monitor.xaml.cs"> | |||||
<SubType>Code</SubType> | |||||
</Compile> | |||||
<Compile Update="View\ParSet.xaml.cs"> | |||||
<SubType>Code</SubType> | |||||
</Compile> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Page Update="View\Debug.xaml"> | |||||
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | |||||
<SubType>Designer</SubType> | |||||
</Page> | |||||
<Page Update="View\Monitor.xaml"> | |||||
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | |||||
<SubType>Designer</SubType> | |||||
</Page> | |||||
<Page Update="View\ParSet.xaml"> | |||||
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | |||||
<SubType>Designer</SubType> | |||||
</Page> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,402 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Collections.Concurrent; | |||||
using BPA.Message; | |||||
using BPASmartClient.Device; | |||||
using BPASmartClient.Model; | |||||
namespace BPASmartClient.MorkM | |||||
{ | |||||
/// <summary> | |||||
/// MORKS 设备数据 | |||||
/// </summary> | |||||
public class GVL_MORKM : IStatus | |||||
{ | |||||
public GVL_MORKM() | |||||
{ | |||||
for (int i = 0; i < 6; i++) | |||||
{ | |||||
CookNodelId.Add(new CookNodleLocAndId() { CookNodelId = "", Loc = -1 }); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 机器人取面 | |||||
/// PLC -> M0.3 | |||||
/// ModbusTcp -> 323 | |||||
/// </summary> | |||||
public bool RobotTakeNoodle { get; set; } | |||||
/// <summary> | |||||
/// 机器人出餐 | |||||
/// PLC -> M0.4 | |||||
/// ModbusTcp -> 324 | |||||
/// </summary> | |||||
public bool RobotOutMeal { get; set; } | |||||
/// <summary> | |||||
/// 移动转台 | |||||
/// PLC -> M0.5 | |||||
/// ModbusTcp -> 325 | |||||
/// </summary> | |||||
public bool MoveTurntable { get; set; } | |||||
#region 临时变量 | |||||
/// <summary> | |||||
/// 允许运行 | |||||
/// </summary> | |||||
[VariableMonitor("允许运行")] | |||||
public bool AllowRun { get; set; } | |||||
/// <summary> | |||||
/// //机器人任务互锁信号 | |||||
/// </summary> | |||||
[VariableMonitor("机器人任务互锁信号")] | |||||
public bool RobotTaskInterlock { get; set; } | |||||
/// <summary> | |||||
/// 取碗互锁信号 | |||||
/// </summary> | |||||
[VariableMonitor("取碗互锁信号")] | |||||
public bool TakeBowlInterlock { get; set; } | |||||
/// <summary> | |||||
/// 取面互锁信号 | |||||
/// </summary> | |||||
[VariableMonitor("取面互锁信号")] | |||||
public bool TakeNoodleInterlock { get; set; } | |||||
/// <summary> | |||||
/// 出面中 | |||||
/// </summary> | |||||
[VariableMonitor("出面中")] | |||||
public bool OutNoodleing { get; set; } | |||||
/// <summary> | |||||
/// 允许取面 | |||||
/// </summary> | |||||
[VariableMonitor("允许取面")] | |||||
public bool AllowTakeNoodle { get; set; } | |||||
/// <summary> | |||||
/// 转台互锁信号 | |||||
/// </summary> | |||||
[VariableMonitor("转台互锁信号")] | |||||
public bool TurntableInterlock { get; set; } | |||||
/// <summary> | |||||
/// 荤素出餐互锁 | |||||
/// </summary> | |||||
[VariableMonitor("荤素出餐互锁")] | |||||
public bool ERLoc { get; set; } = false; | |||||
/// <summary> | |||||
/// 当前取餐位置 | |||||
/// </summary> | |||||
[VariableMonitor("当前取餐位置")] | |||||
public int CurrentTakeMeakLoc { get; set; } = -1; | |||||
#endregion | |||||
/// <summary> | |||||
/// 初始化完成 | |||||
/// PLC -> M100.0 | |||||
/// ModbusTcp -> 1120 | |||||
/// </summary> | |||||
[VariableMonitor("初始化完成", "M100.0", "1120")] | |||||
public bool InitComplete { get; set; } | |||||
/// <summary> | |||||
/// 取碗机构空闲,True:忙碌,false:空闲 | |||||
/// PLC -> M100.1 | |||||
/// ModbusTcp -> 1121 | |||||
/// </summary> | |||||
[VariableMonitor("取碗机构空闲", "M100.1", "1121")] | |||||
public bool TakeBowlIdle { get; set; } | |||||
/// <summary> | |||||
/// 温度到达,True:表示到达,false:未到达 | |||||
/// PLC -> M100.2 | |||||
/// ModbusTcp -> 1122 | |||||
/// </summary> | |||||
[VariableMonitor("温度到达", "M100.2", "1122")] | |||||
public bool TemperatureReached { get; set; } | |||||
/// <summary> | |||||
/// 允许到面,配料完成 | |||||
/// PLC -> M100.3 | |||||
/// ModbusTcp -> 1123 | |||||
/// </summary> | |||||
[VariableMonitor("允许到面", "M100.3", "1123")] | |||||
public bool AllowFallNoodle { get; set; } | |||||
/// <summary> | |||||
/// 机器人取面完成 | |||||
/// PLC -> M100.4 | |||||
/// ModbusTcp -> 1124 | |||||
/// </summary> | |||||
[VariableMonitor("机器人取面完成", "M100.4", "1124")] | |||||
public bool RbTakeNoodleComplete { get; set; } | |||||
/// <summary> | |||||
/// 机器人倒面完成 | |||||
/// PLC -> M100.5 | |||||
/// ModbusTcp -> 1125 | |||||
/// </summary> | |||||
[VariableMonitor("机器人倒面完成", "M100.5", "1125")] | |||||
public bool RbFallNoodleComplete { get; set; } | |||||
/// <summary> | |||||
/// 机器人出餐完成,上报取餐完成 | |||||
/// PLC -> M100.6 | |||||
/// ModbusTcp -> 1126 | |||||
/// </summary> | |||||
[VariableMonitor("机器人出餐完成", "M100.6", "1126")] | |||||
public bool RbOutMealComplete { get; set; } | |||||
/// <summary> | |||||
/// 机器人空闲 | |||||
/// PLC -> M100.7 | |||||
/// ModbusTcp -> 1127 | |||||
/// </summary> | |||||
[VariableMonitor("机器人空闲", "M100.7", "1127")] | |||||
public bool RobotIdle { get; set; } | |||||
/// <summary> | |||||
/// 取餐口检测 | |||||
/// PLC -> M101.0 | |||||
/// ModbusTcp -> 1128 | |||||
/// </summary> | |||||
[VariableMonitor("取餐口检测", "M101.0", "1128")] | |||||
public bool TakeMealDetect { get; set; } | |||||
/// <summary> | |||||
/// 缺碗信号,false:缺碗,true:有碗 | |||||
/// PLC -> M101.1 | |||||
/// ModbusTcp -> 1129 | |||||
/// </summary> | |||||
[VariableMonitor("缺碗信号", "M101.1", "1129")] | |||||
public bool MissingBowl { get; set; } | |||||
/// <summary> | |||||
/// 设备初始化中,执行中等于1,2秒后复位 | |||||
/// PLC -> M101.2 | |||||
/// ModbusTcp -> 1130 | |||||
/// </summary> | |||||
[VariableMonitor("设备初始化中", "M101.2", "1130")] | |||||
public bool DeviceIniting { get; set; } | |||||
/// <summary> | |||||
/// 转台下限检测 | |||||
/// PLC -> M101.3 | |||||
/// ModbusTcp -> 1131 | |||||
/// </summary> | |||||
[VariableMonitor("转台下限检测", "M101.3", "1131")] | |||||
public bool TurntableLowerLimit { get; set; } | |||||
/// <summary> | |||||
/// 缺碗信号 2 | |||||
/// PLC -> M101.4 | |||||
/// ModbusTcp -> 1132 | |||||
/// </summary> | |||||
[VariableMonitor("缺碗信号 2", "M101.4", "1132")] | |||||
public bool MissingBowlSignal2 { get; set; } | |||||
/// <summary> | |||||
/// 转台上限检测 | |||||
/// PLC -> M101.5 | |||||
/// ModbusTcp -> 1133 | |||||
/// </summary> | |||||
[VariableMonitor("转台上限检测", "M101.5", "1133")] | |||||
public bool TurntableUpLimit { get; set; } | |||||
/// <summary> | |||||
/// 补料完成 | |||||
/// PLC -> M101.6 | |||||
/// ModbusTcp -> 1134 | |||||
/// </summary> | |||||
[VariableMonitor("补料完成", "M101.6", "1134")] | |||||
public bool FeedComplete { get; set; } | |||||
/// <summary> | |||||
/// 转台移动到位 | |||||
/// PLC -> M101.7 | |||||
/// ModbusTcp -> 1135 | |||||
/// </summary> | |||||
[VariableMonitor("转台移动到位", "M101.7", "1135")] | |||||
public bool TurntableMoveInPlace { get; set; } | |||||
/// <summary> | |||||
/// 煮面炉状态,True:忙碌,false:空闲 | |||||
/// M102.0 - M102.5 | |||||
/// 1136 - 1141 | |||||
/// </summary> | |||||
[VariableMonitor("煮面炉状态", "M102.0", "1136")] | |||||
public bool[] NoodleCookerStatus { get; set; } = new bool[6] { false, false, false, false, false, false }; | |||||
/// <summary> | |||||
/// 补料中 | |||||
/// M102.6 | |||||
/// 1142 | |||||
/// </summary> | |||||
[VariableMonitor("补料中", "M102.6", "1142")] | |||||
public bool Feeding { get; set; } | |||||
/// <summary> | |||||
/// 煮面完成,上升后给信号 | |||||
/// M103.0 - M103.5 | |||||
/// 1144 - 1149 | |||||
/// </summary> | |||||
[VariableMonitor("煮面完成", "M103.0", "1144")] | |||||
public bool[] CookNoodlesComplete { get; set; } = new bool[6] { false, false, false, false, false, false }; | |||||
/// <summary> | |||||
/// 硬件设备异常 | |||||
/// PLC -> M235.0 | |||||
/// True:设备正常,False:设备异常 | |||||
/// </summary> | |||||
[VariableMonitor("硬件设备异常", "M235.0", "")] | |||||
public bool Error { get; set; } = false; | |||||
/// <summary> | |||||
/// 配方编号 | |||||
/// PLC -> VW0 | |||||
/// ModbusTcp -> 100 | |||||
/// </summary> | |||||
[VariableMonitor("配方编号", "VW0", "100")] | |||||
public ushort RecipeNumber { get; set; } | |||||
/// <summary> | |||||
/// 转台设置位置 | |||||
/// PLC -> VW2 | |||||
/// ModbusTcp -> 101 | |||||
/// </summary> | |||||
[VariableMonitor("转台设置位置", "VW2", "101")] | |||||
public ushort TurntableLoc { get; set; } | |||||
/// <summary> | |||||
/// 到面至煮面炉位置 | |||||
/// PLC -> VW4 | |||||
/// ModbusTcp -> 102 | |||||
/// </summary> | |||||
[VariableMonitor("到面至煮面炉位置", "VW4", "102")] | |||||
public ushort FallNoodleLoc { get; set; } | |||||
/// <summary> | |||||
/// 取面位置 | |||||
/// PLC -> VW6 | |||||
/// ModbusTcp -> 103 | |||||
/// </summary> | |||||
[VariableMonitor("取面位置", "VW6", "103")] | |||||
public ushort TakeNoodleLoc { get; set; } | |||||
/// <summary> | |||||
/// 转台反馈位置 | |||||
/// PLC -> VW372 | |||||
/// ModbusTcp -> 286 | |||||
/// </summary> | |||||
[VariableMonitor("转台反馈位置", "VW372", "286")] | |||||
public ushort TurntableFeedbackloc { get; set; } | |||||
/// <summary> | |||||
/// 机器人取面位置队列 | |||||
/// </summary> | |||||
public ConcurrentQueue<OrderLocInfo> RBTakeNoodleTask { get; set; } = new ConcurrentQueue<OrderLocInfo>(); | |||||
/// <summary> | |||||
/// 出碗队列 | |||||
/// </summary> | |||||
public ConcurrentQueue<OrderLocInfo> TakeBowlTask { get; set; } = new ConcurrentQueue<OrderLocInfo>(); | |||||
/// <summary> | |||||
/// 是否有面条 | |||||
/// </summary> | |||||
public bool IsNoodles { get; set; } = true; | |||||
public Dictionary<int, OrderLocInfo> ListOrder { get; set; } = new Dictionary<int, OrderLocInfo>(); //存放当前订单已做好素菜 | |||||
public Dictionary<int, OrderLocInfo> ListOrderMeat { get; set; } = new Dictionary<int, OrderLocInfo>(); //存放当前订单已做好荤菜 | |||||
public int DishNumber { set; get; } = 0; //当前订单中配菜的数量 | |||||
#region 订单ID记录 | |||||
/// <summary> | |||||
/// 取碗订单ID | |||||
/// </summary> | |||||
public string TakeBowlId = string.Empty; | |||||
/// <summary> | |||||
/// 配料完成订单ID | |||||
/// </summary> | |||||
public string IngredientsCompleteId = string.Empty; | |||||
/// <summary> | |||||
/// 煮面口对应的订单ID | |||||
/// </summary> | |||||
//public string[] CookNodelId = new string[6] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, }; | |||||
public List<CookNodleLocAndId> CookNodelId { get; set; } = new List<CookNodleLocAndId>(); | |||||
//public string[] CookNodelId = new string[6] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, }; | |||||
public OrderLocInfo[] orderLocInfos = new OrderLocInfo[6] { null, null, null, null, null, null }; | |||||
/// <summary> | |||||
/// 出餐订单ID | |||||
/// </summary> | |||||
public string OutMealId = string.Empty; | |||||
/// <summary> | |||||
/// 冒菜制作方式,true:加汤,false:不加汤 | |||||
/// </summary> | |||||
public bool OutMealType { get; set; } = false; | |||||
/// <summary> | |||||
/// 转台位置轮询 | |||||
/// </summary> | |||||
public List<ushort> TurntableLocLists = new List<ushort>(); | |||||
/// <summary> | |||||
/// 转台当前启动位置 | |||||
/// </summary> | |||||
[VariableMonitor("转台当前启动位置")] | |||||
public ushort CurrentLoc { get; set; } = 0; | |||||
public List<DoOrderEvent> doOrderEvents { get; set; } = new List<DoOrderEvent>(); | |||||
public int Num { get; set; } //记录同一个订单是否所有配菜均已出锅 | |||||
public int Count { get; set; } = 0; //用于素菜的计数 | |||||
public int CountMeat { get; set; } = 0;//用于荤菜计数 | |||||
public int Vnum { get; set; } = 0; //单次订单素菜的总数 | |||||
public int VegtabNum { get; set; } = 0;//记录一个订单中素菜的数量 | |||||
public int TotalNum { get; set; } = 0; //单次订单的配菜总数 | |||||
public ConcurrentQueue<Dictionary<string, OrderInformation>> Conqueue = new ConcurrentQueue<Dictionary<string, OrderInformation>>(); //记录订单的ID 以及素菜数量 | |||||
public bool relock { get; set; } = false; //单次订单互锁 | |||||
public bool HasVeg { get; set; } //是否有素菜判断 | |||||
public bool VegNoodlesLock { get; set; } = false; //取面和取餐互锁 | |||||
public int VegN { get; set; } = 0; //素菜出餐计数 | |||||
#endregion | |||||
} | |||||
public class CookNodleLocAndId | |||||
{ | |||||
public string CookNodelId { get; set; } | |||||
public int Loc { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,18 @@ | |||||
using BPASmartClient.Device; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM | |||||
{ | |||||
public class HardwareStatus : IHardwareStatus | |||||
{ | |||||
[HardwareStatus("输入状态", "I0.0")] | |||||
public bool Input1 { get; set; } | |||||
[HardwareStatus("输出状态", "Q0.0")] | |||||
public bool OutPut1 { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,16 @@ | |||||
using BPASmartClient.Model; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
namespace BPASmartClient.MorkM.Model | |||||
{ | |||||
internal class MorksPar | |||||
{ | |||||
public ObservableCollection<ParSet> parSets { get; set; } = new ObservableCollection<ParSet>(); | |||||
} | |||||
} |
@@ -0,0 +1,29 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM.Model | |||||
{ | |||||
public class ParSet | |||||
{ | |||||
public ushort Minute { get { return _mMinute; } set { _mMinute = value; } } | |||||
private ushort _mMinute; | |||||
public ushort Second { get { return _mSecond; } set { _mSecond = value; } } | |||||
private ushort _mSecond; | |||||
public bool IsShield { get { return _mIsShield; } set { _mIsShield = value; } } | |||||
private bool _mIsShield; | |||||
public string TextBlockContext { get { return _mTextBlockContext; } set { _mTextBlockContext = value; } } | |||||
private string _mTextBlockContext; | |||||
public string CheckBoxContext { get { return _mCheckBoxContext; } set { _mCheckBoxContext = value; } } | |||||
private string _mCheckBoxContext; | |||||
} | |||||
} |
@@ -0,0 +1,14 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM.Model | |||||
{ | |||||
public class WritePar | |||||
{ | |||||
public string Address { get; set; } | |||||
public object Value { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,29 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM | |||||
{ | |||||
public class OrderLocInfo | |||||
{ | |||||
public string SuborderId { get; set; } | |||||
public ushort Loc { get; set; } | |||||
public ushort RecipeNumber { get; set; } | |||||
public int BatchingId { get; set; } | |||||
public string GoodName { get; set; } | |||||
} | |||||
/// <summary> | |||||
/// 存储订单中素菜荤菜数量 | |||||
/// </summary> | |||||
public class OrderInformation | |||||
{ | |||||
public int VegatableNumber { get; set; } | |||||
public int DishNum { get; set; } | |||||
// public GoodsMakeType MakeType { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,32 @@ | |||||
<UserControl | |||||
x:Class="BPASmartClient.MorkM.View.Debug" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkM.View" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:vm="clr-namespace:BPASmartClient.MorkM.ViewModel" | |||||
Name="调试界面" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<UserControl.DataContext> | |||||
<vm:DebugViewModel /> | |||||
</UserControl.DataContext> | |||||
<Grid> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="35" /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<Button | |||||
Grid.Row="0" | |||||
Width="150" | |||||
Margin="10,0,0,0" | |||||
HorizontalAlignment="Left" | |||||
Command="{Binding InitCommand}" | |||||
Content="初始化设备" | |||||
Style="{StaticResource ButtonStyle}" /> | |||||
</Grid> | |||||
</UserControl> |
@@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.MorkM.View | |||||
{ | |||||
/// <summary> | |||||
/// Debug.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class Debug : UserControl | |||||
{ | |||||
public Debug() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,242 @@ | |||||
<UserControl | |||||
x:Class="BPASmartClient.MorkM.View.Monitor" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkM.View" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:vm="clr-namespace:BPASmartClient.MorkM.ViewModel" | |||||
Name="监控画面" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<UserControl.DataContext> | |||||
<vm:MonitorViewModel /> | |||||
</UserControl.DataContext> | |||||
<UserControl.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary> | |||||
<!--<convert:TextDisplayConvert x:Key="textDisplayConvert" /> | |||||
<convert:IsEnableConvert x:Key="isEnableConvert" /> | |||||
<convert:AnalogAlarmConvert x:Key="analogAlarmConvert" /> | |||||
<convert:DiscreteAlarmConvert x:Key="discreteAlarmConvert" /> | |||||
<convert:AlarmTypeTextConvert x:Key="alarmTypeTextConvert" />--> | |||||
<SolidColorBrush x:Key="BorderSolid" Color="#5523CACA" /> | |||||
<SolidColorBrush x:Key="FontColor" Color="#FF2AB2E7" /> | |||||
<SolidColorBrush x:Key="TitleFontColor" Color="#ddd" /> | |||||
<SolidColorBrush x:Key="CursorColor" Color="Aqua" /> | |||||
<SolidColorBrush x:Key="TitleBorderColor" Color="#FF2AB2E7" /> | |||||
<Style x:Key="TextBlockStyle" TargetType="TextBlock"> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="FontSize" Value="18" /> | |||||
<Setter Property="Foreground" Value="{StaticResource TextBlockForeground}" /> | |||||
<Setter Property="VerticalAlignment" Value="Center" /> | |||||
<Setter Property="HorizontalAlignment" Value="Center" /> | |||||
</Style> | |||||
<Style x:Key="TextBoxStyle" TargetType="TextBox"> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="FontSize" Value="22" /> | |||||
<Setter Property="Background" Value="Transparent" /> | |||||
<Setter Property="Foreground" Value="{StaticResource TextBlockForeground}" /> | |||||
<Setter Property="BorderBrush" Value="#FF23CACA" /> | |||||
<Setter Property="CaretBrush" Value="Aqua" /> | |||||
<Setter Property="VerticalAlignment" Value="Center" /> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</UserControl.Resources> | |||||
<Grid Margin="10"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="30" /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<!--#region 表格标题栏设置--> | |||||
<Grid Background="#dd2AB2E7"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="0.3*" /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition Width="0.7*" /> | |||||
<ColumnDefinition Width="0.7*" /> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock | |||||
Grid.Column="0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="ID" /> | |||||
<Grid Grid.Column="1"> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="变量名" /> | |||||
<Border | |||||
BorderBrush="{StaticResource TitleBorderColor}" | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
</Grid> | |||||
<TextBlock | |||||
Grid.Column="2" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="PLC 地址" /> | |||||
<Grid Grid.Column="3"> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="注释" /> | |||||
<Border | |||||
BorderBrush="{StaticResource TitleBorderColor}" | |||||
BorderThickness="1,0,0,0" | |||||
Cursor="SizeWE" /> | |||||
</Grid> | |||||
<Grid Grid.Column="4"> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="Modbus TCP 地址" /> | |||||
<Border | |||||
BorderBrush="{StaticResource TitleBorderColor}" | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
</Grid> | |||||
<TextBlock | |||||
Grid.Column="5" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="{StaticResource TitleFontColor}" | |||||
Text="当前值" /> | |||||
</Grid> | |||||
<!--#endregion--> | |||||
<!--#region 表格数据显示--> | |||||
<ScrollViewer | |||||
Grid.Row="1" | |||||
HorizontalScrollBarVisibility="Hidden" | |||||
VerticalScrollBarVisibility="Hidden"> | |||||
<ItemsControl ItemsSource="{Binding variableMonitors}"> | |||||
<ItemsControl.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid x:Name="gr" Height="30"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="0.3*" /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition Width="0.7*" /> | |||||
<ColumnDefinition Width="0.7*" /> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock | |||||
Grid.Column="0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding Id}" /> | |||||
<Grid Grid.Column="1"> | |||||
<TextBlock | |||||
Margin="5,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding VarName}" /> | |||||
<Border BorderBrush="{StaticResource BorderSolid}" BorderThickness="1,0,1,0" /> | |||||
</Grid> | |||||
<TextBlock | |||||
Grid.Column="2" | |||||
Margin="5,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding PLCAddress}" /> | |||||
<Grid Grid.Column="3"> | |||||
<TextBlock | |||||
Margin="5,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding Notes}" /> | |||||
<Border BorderBrush="{StaticResource BorderSolid}" BorderThickness="1,0,0,0" /> | |||||
</Grid> | |||||
<Grid Grid.Column="4"> | |||||
<TextBlock | |||||
Margin="5,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding ModbusTcpAddress}" /> | |||||
<Border BorderBrush="{StaticResource BorderSolid}" BorderThickness="1,0,1,0" /> | |||||
</Grid> | |||||
<TextBlock | |||||
Grid.Column="5" | |||||
Margin="5,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="14" | |||||
Foreground="{StaticResource FontColor}" | |||||
Text="{Binding CurrentValue}" /> | |||||
<Border | |||||
Grid.ColumnSpan="8" | |||||
BorderBrush="{StaticResource BorderSolid}" | |||||
BorderThickness="1" /> | |||||
</Grid> | |||||
<DataTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="true"> | |||||
<Setter TargetName="gr" Property="Background" Value="#112AB2E7" /> | |||||
</Trigger> | |||||
</DataTemplate.Triggers> | |||||
</DataTemplate> | |||||
</ItemsControl.ItemTemplate> | |||||
</ItemsControl> | |||||
</ScrollViewer> | |||||
<!--#endregion--> | |||||
</Grid> | |||||
</UserControl> |
@@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.MorkM.View | |||||
{ | |||||
/// <summary> | |||||
/// Monitor.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class Monitor : UserControl | |||||
{ | |||||
public Monitor() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,130 @@ | |||||
<UserControl | |||||
x:Class="BPASmartClient.MorkM.View.ParSet" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkM.View" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource" | |||||
xmlns:vm="clr-namespace:BPASmartClient.MorkM.ViewModel" | |||||
Name="参数设置界面" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<UserControl.DataContext> | |||||
<vm:ParSetViewModel /> | |||||
</UserControl.DataContext> | |||||
<UserControl.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary> | |||||
<Style x:Key="TextBlockStyle" TargetType="TextBlock"> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="FontSize" Value="18" /> | |||||
<Setter Property="Foreground" Value="{StaticResource TextBlockForeground}" /> | |||||
<Setter Property="VerticalAlignment" Value="Center" /> | |||||
<Setter Property="HorizontalAlignment" Value="Center" /> | |||||
</Style> | |||||
<Style x:Key="TextBoxStyle" TargetType="TextBox"> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="FontSize" Value="22" /> | |||||
<Setter Property="Background" Value="Transparent" /> | |||||
<Setter Property="Foreground" Value="{StaticResource TextBlockForeground}" /> | |||||
<Setter Property="BorderBrush" Value="#FF23CACA" /> | |||||
<Setter Property="CaretBrush" Value="Aqua" /> | |||||
<Setter Property="VerticalAlignment" Value="Center" /> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</UserControl.Resources> | |||||
<Grid Margin="10"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="35" /> | |||||
<RowDefinition Height="Auto" /> | |||||
</Grid.RowDefinitions> | |||||
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> | |||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="请点击按钮保存参数:" /> | |||||
<pry:IcoButton | |||||
Grid.Column="5" | |||||
Width="140" | |||||
HorizontalAlignment="Left" | |||||
Command="{Binding SaveInfoCommand}" | |||||
Content="保存配置" | |||||
FontSize="16" | |||||
IcoText="" | |||||
Style="{StaticResource NewButtonStyle}"> | |||||
<pry:IcoButton.Foreground> | |||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> | |||||
<GradientStop Color="#FFBB662A" /> | |||||
<GradientStop Offset="1" Color="White" /> | |||||
</LinearGradientBrush> | |||||
</pry:IcoButton.Foreground> | |||||
</pry:IcoButton> | |||||
</StackPanel> | |||||
<!-- 参数放置面板 --> | |||||
<Grid Grid.Row="2"> | |||||
<ItemsControl ItemsSource="{Binding parSets}"> | |||||
<ItemsControl.ItemTemplate> | |||||
<DataTemplate> | |||||
<StackPanel Orientation="Horizontal"> | |||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="{Binding TextBlockContext}" /> | |||||
<TextBox | |||||
Width="100" | |||||
Margin="10,0,0,0" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
BorderBrush="#FF23CACA" | |||||
CaretBrush="Aqua" | |||||
FontFamily="楷体" | |||||
FontSize="21" | |||||
Foreground="#ff34f7f7" | |||||
Text="{Binding Minute}" /> | |||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="(分)" /> | |||||
<TextBox | |||||
Width="100" | |||||
Margin="0,10" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
BorderBrush="#FF23CACA" | |||||
CaretBrush="Aqua" | |||||
FontFamily="楷体" | |||||
FontSize="21" | |||||
Foreground="#ff34f7f7" | |||||
Text="{Binding Second}" /> | |||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="(秒)" /> | |||||
<CheckBox | |||||
Height="20" | |||||
Margin="10" | |||||
VerticalAlignment="Center" | |||||
Background="#FF2AB2E7" | |||||
Content="{Binding CheckBoxContext}" | |||||
FontSize="14" | |||||
Foreground="#00c2f4" | |||||
IsChecked="{Binding IsShield}" | |||||
Template="{StaticResource CbTemplate}" /> | |||||
</StackPanel> | |||||
</DataTemplate> | |||||
</ItemsControl.ItemTemplate> | |||||
</ItemsControl> | |||||
</Grid> | |||||
</Grid> | |||||
</UserControl> |
@@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.MorkM.View | |||||
{ | |||||
/// <summary> | |||||
/// ParSet.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class ParSet : UserControl | |||||
{ | |||||
public ParSet() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using BPASmartClient.Helper; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
{ | |||||
public class DebugViewModel : ObservableObject | |||||
{ | |||||
public DebugViewModel() | |||||
{ | |||||
InitCommand = new RelayCommand(() => { ActionManage.GetInstance.Send("InitDevice"); }); | |||||
} | |||||
public RelayCommand InitCommand { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using BPASmartClient.Business; | |||||
using BPASmartClient.Device; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using System.Collections.ObjectModel; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
{ | |||||
public class MonitorViewModel : ObservableObject | |||||
{ | |||||
public MonitorViewModel() | |||||
{ | |||||
} | |||||
public static int DeviceId { get; set; } | |||||
public ObservableCollection<VariableMonitor> variableMonitors { get; set; } = Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.FirstOrDefault(p => p.DeviceId == DeviceId)?.variableMonitors; | |||||
} | |||||
} |
@@ -0,0 +1,43 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.Model; | |||||
using BPASmartClient.MorkS.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
{ | |||||
public class ParSetViewModel : ObservableObject | |||||
{ | |||||
public ParSetViewModel() | |||||
{ | |||||
SaveInfoCommand = new Action(() => | |||||
{ | |||||
List<ushort> values = new List<ushort>(); | |||||
values.Clear(); | |||||
List<bool> bools = new List<bool>(); | |||||
bools.Clear(); | |||||
for (int i = 0; i < Json<MorksPar>.Data.parSets.Count; i++) | |||||
{ | |||||
values.Clear(); | |||||
values.Add(Json<MorksPar>.Data.parSets[i].Minute); | |||||
values.Add(Json<MorksPar>.Data.parSets[i].Second); | |||||
bools.Add(Json<MorksPar>.Data.parSets[i].IsShield); | |||||
ActionManage.GetInstance.Send("WriteVW", new WritePar() { Address = $"VW{116 + (i * 6)}", Value = values.ToArray() }); | |||||
} | |||||
ActionManage.GetInstance.Send("WriteBools", new WritePar() { Address = "M260.0", Value = bools.ToArray() }); | |||||
Json<MorksPar>.Save(); | |||||
}); | |||||
} | |||||
public Action SaveInfoCommand { get; set; } | |||||
public ObservableCollection<ParSet> parSets { get; set; } = Json<MorksPar>.Data.parSets; | |||||
} | |||||
} |
@@ -0,0 +1,9 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>net6.0-windows</TargetFramework> | |||||
<Nullable>enable</Nullable> | |||||
<UseWPF>true</UseWPF> | |||||
</PropertyGroup> | |||||
</Project> |
@@ -0,0 +1,8 @@ | |||||
using System; | |||||
namespace BPASmartClient.MorkT.Lebai.JC | |||||
{ | |||||
public class Class1 | |||||
{ | |||||
} | |||||
} |
@@ -0,0 +1,9 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>net6.0-windows</TargetFramework> | |||||
<Nullable>enable</Nullable> | |||||
<UseWPF>true</UseWPF> | |||||
</PropertyGroup> | |||||
</Project> |
@@ -0,0 +1,8 @@ | |||||
using System; | |||||
namespace BPASmartClient.Morkt.JAKA.JC | |||||
{ | |||||
public class Class1 | |||||
{ | |||||
} | |||||
} |
@@ -78,6 +78,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkF", "BPA | |||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.LebaiRobot", "BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj", "{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.LebaiRobot", "BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj", "{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MorkM", "BPASmartClient.MorkM\BPASmartClient.MorkM.csproj", "{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MorkT.Lebai.JC", "BPASmartClient.MorkT.Lebai.JC\BPASmartClient.MorkT.Lebai.JC.csproj", "{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.Morkt.JAKA.JC", "BPASmartClient.Morkt.JAKA.JC\BPASmartClient.Morkt.JAKA.JC.csproj", "{6B0FD858-A60D-41B9-A923-358B0CE2A254}" | |||||
EndProject | |||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
Debug|Any CPU = Debug|Any CPU | Debug|Any CPU = Debug|Any CPU | ||||
@@ -672,6 +678,66 @@ Global | |||||
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x64.Build.0 = Release|Any CPU | {D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x64.Build.0 = Release|Any CPU | ||||
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.ActiveCfg = Release|Any CPU | {D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.ActiveCfg = Release|Any CPU | ||||
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.Build.0 = Release|Any CPU | {D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.Build.0 = Release|Any CPU | ||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|ARM64.Build.0 = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|ARM.Build.0 = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|ARM64.ActiveCfg = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|ARM64.Build.0 = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|x64.Build.0 = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9}.Release|x86.Build.0 = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|ARM64.Build.0 = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|ARM.Build.0 = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|ARM64.ActiveCfg = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|ARM64.Build.0 = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|x64.Build.0 = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D}.Release|x86.Build.0 = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|ARM64.Build.0 = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|ARM.Build.0 = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|ARM64.ActiveCfg = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|ARM64.Build.0 = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|x64.Build.0 = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254}.Release|x86.Build.0 = Release|Any CPU | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -706,6 +772,9 @@ Global | |||||
{7F04A788-38B5-42CB-B601-70C657C953B8} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | {7F04A788-38B5-42CB-B601-70C657C953B8} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | ||||
{15FD3FF1-80F1-4274-945A-BA5EBA35999E} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | {15FD3FF1-80F1-4274-945A-BA5EBA35999E} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | ||||
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | {D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | ||||
{74DB1F85-9B73-4113-8FE4-A63754BC7DF9} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||||
{0A06C9E5-5C42-4BCE-B6E6-D8054C72255D} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||||
{6B0FD858-A60D-41B9-A923-358B0CE2A254} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ExtensibilityGlobals) = postSolution | GlobalSection(ExtensibilityGlobals) = postSolution | ||||
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | ||||