@@ -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 | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.LebaiRobot", "BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj", "{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}" | |||
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 | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
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|x86.ActiveCfg = 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 | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
@@ -706,6 +772,9 @@ Global | |||
{7F04A788-38B5-42CB-B601-70C657C953B8} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | |||
{15FD3FF1-80F1-4274-945A-BA5EBA35999E} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||
{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 | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | |||