@@ -18,4 +18,8 @@ | |||||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | <ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Folder Include="Model\" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -30,7 +30,7 @@ namespace BPASmartClient.MorkF | |||||
CommandRegist();//调试 | CommandRegist();//调试 | ||||
ServerInit(); | ServerInit(); | ||||
DataParse();//数据解析 | DataParse();//数据解析 | ||||
MessageLog.GetInstance.Show("MORKF 设备初始化完成"); | |||||
DeviceProcessLogShow("MORKF 设备初始化完成"); | |||||
} | } | ||||
#region 调试代码 | #region 调试代码 | ||||
public void CommandRegist() | public void CommandRegist() | ||||
@@ -324,7 +324,7 @@ namespace BPASmartClient.MorkF | |||||
// //配方数据地址范围:VW2000 - VW2278 | // //配方数据地址范围:VW2000 - VW2278 | ||||
// WriteData("VW2000", recipeBoms.ToArray()); | // WriteData("VW2000", recipeBoms.ToArray()); | ||||
//} | //} | ||||
//else { MessageLog.GetInstance.Show("配方数据为空"); } | |||||
//else {DeviceProcessLogShow("配方数据为空"); } | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -339,7 +339,7 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
if (order.MorkOrder.GoodBatchings == null) return; | if (order.MorkOrder.GoodBatchings == null) return; | ||||
OrderCount++; | OrderCount++; | ||||
MessageLog.GetInstance.Show($"接收到{OrderCount}次订单"); | |||||
DeviceProcessLogShow($"接收到{OrderCount}次订单"); | |||||
foreach (var item in order.MorkOrder.GoodBatchings) | foreach (var item in order.MorkOrder.GoodBatchings) | ||||
{ | { | ||||
var res = orderMaterialDelivery?.BatchingInfo?.FirstOrDefault(p => p.BatchingId == item.BatchingId); | var res = orderMaterialDelivery?.BatchingInfo?.FirstOrDefault(p => p.BatchingId == item.BatchingId); | ||||
@@ -347,7 +347,7 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
if (ushort.TryParse(res.BatchingLoc, out ushort loc)) | if (ushort.TryParse(res.BatchingLoc, out ushort loc)) | ||||
{ | { | ||||
//if (morkF.TakeMaterialQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) | //if (morkF.TakeMaterialQueue.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) | ||||
//将一个商品的ABC料位置存入队列 | //将一个商品的ABC料位置存入队列 | ||||
morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = order.MorkOrder.SuborderId, BatchingId = res.BatchingId, MaterialLoc = ushort.Parse(res.BatchingLoc) }); | morkF.TakeMaterialQueue.Enqueue(new OrderLocInfo() { SuborderId = order.MorkOrder.SuborderId, BatchingId = res.BatchingId, MaterialLoc = ushort.Parse(res.BatchingLoc) }); | ||||
@@ -405,7 +405,7 @@ namespace BPASmartClient.MorkF | |||||
morkF.listStirBom.RemoveAt(0); | morkF.listStirBom.RemoveAt(0); | ||||
foreach (var res in bom.StirFryActions) | foreach (var res in bom.StirFryActions) | ||||
{ | { | ||||
MessageLog.GetInstance.Show($"执行流程{res.Time}"); | |||||
DeviceProcessLogShow($"执行流程{res.Time}"); | |||||
//机器人线程 | //机器人线程 | ||||
Task taskRobot = Task.Run(new Action(() => | Task taskRobot = Task.Run(new Action(() => | ||||
{ | { | ||||
@@ -524,7 +524,7 @@ namespace BPASmartClient.MorkF | |||||
morkF.listStirBom.RemoveAt(0); | morkF.listStirBom.RemoveAt(0); | ||||
foreach (var res in bom.StirFryActions)//遍历所有流程 | foreach (var res in bom.StirFryActions)//遍历所有流程 | ||||
{ | { | ||||
MessageLog.GetInstance.Show($"执行流程{res.Time}"); | |||||
DeviceProcessLogShow($"执行流程{res.Time}"); | |||||
//机器人线程 | //机器人线程 | ||||
Task taskRobot = Task.Run(new Action(() => | Task taskRobot = Task.Run(new Action(() => | ||||
{ | { | ||||
@@ -635,7 +635,7 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
//出餐完成,相应变量复位 | |||||
//主流程出餐完成,相应变量复位 | |||||
if (morkF.MainOutMealComplete) | if (morkF.MainOutMealComplete) | ||||
{ | { | ||||
morkF.TakePlateLock = false; | morkF.TakePlateLock = false; | ||||
@@ -643,7 +643,7 @@ namespace BPASmartClient.MorkF | |||||
morkF.MainProcessExcuteLock = false; | morkF.MainProcessExcuteLock = false; | ||||
morkF.MainOrderMaterialCom = false; | morkF.MainOrderMaterialCom = false; | ||||
} | } | ||||
//辅流程出餐完成,相应变量复位 | |||||
if (morkF.MinorOutMealComplete) | if (morkF.MinorOutMealComplete) | ||||
{ | { | ||||
morkF.TakePlateLock = false; | morkF.TakePlateLock = false; | ||||
@@ -669,11 +669,11 @@ namespace BPASmartClient.MorkF | |||||
// if (ushort.TryParse(result[0].BatchingLoc, out ushort loc)) | // if (ushort.TryParse(result[0].BatchingLoc, out ushort loc)) | ||||
// { | // { | ||||
// TurnMaterialStore(loc); | // TurnMaterialStore(loc); | ||||
// MessageLog.GetInstance.Show($"转台转到【{loc}】位置"); | |||||
// DeviceProcessLogShow($"转台转到【{loc}】位置"); | |||||
// morkF.TurnTableLock = true; //取料完成后置false | // morkF.TurnTableLock = true; //取料完成后置false | ||||
// } | // } | ||||
// } | // } | ||||
// else MessageLog.GetInstance.Show("未找到可用的物料信息"); | |||||
// elseDeviceProcessLogShow("未找到可用的物料信息"); | |||||
//} | //} | ||||
//调试代码 | //调试代码 | ||||
@@ -684,12 +684,15 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
TurnMaterialStore(resultorder[0]); | TurnMaterialStore(resultorder[0]); | ||||
MessageLog.GetInstance.Show($"转台转到【{resultorder[0]}】位置"); | |||||
DeviceProcessLogShow($"转台转到【{resultorder[0]}】位置"); | |||||
resultorder.RemoveAt(0); | resultorder.RemoveAt(0); | ||||
morkF.TurnTableLock = true; //取料完成后置false | morkF.TurnTableLock = true; //取料完成后置false | ||||
} | } | ||||
else MessageLog.GetInstance.Show("未找到可用的物料信息"); | |||||
else | |||||
{ | |||||
DeviceProcessLogShow("未找到可用的物料信息"); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -707,12 +710,15 @@ namespace BPASmartClient.MorkF | |||||
if (morkF.TakePlateQueue.TryDequeue(out OrderLocInfo order)) | if (morkF.TakePlateQueue.TryDequeue(out OrderLocInfo order)) | ||||
{ | { | ||||
StartTakePlate(); | StartTakePlate(); | ||||
morkF.CurrentOrderId = order.SuborderId; | |||||
if (morkF.MainProcessStatus) | |||||
morkF.MainCurrentOrderId = order.SuborderId; | |||||
if (morkF.MinorProessStatus) | |||||
morkF.MinorCurrentOrderId = order.SuborderId; | |||||
morkF.TakePlateLock = true; //订单完成后置false | morkF.TakePlateLock = true; //订单完成后置false | ||||
morkF.MainOutMealComplete = false; | morkF.MainOutMealComplete = false; | ||||
morkF.MinorOutMealComplete = false; | morkF.MinorOutMealComplete = false; | ||||
// OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COOKING); | // OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COOKING); | ||||
MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】执行取碗控制"); | |||||
DeviceProcessLogShow($"订单【{order.SuborderId}】执行取碗控制"); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -727,7 +733,7 @@ namespace BPASmartClient.MorkF | |||||
//{ | //{ | ||||
// Task.Delay(5).Wait(); | // Task.Delay(5).Wait(); | ||||
//} | //} | ||||
while (!(!morkF.CleanModule||!morkF.SecondCleanModule)&&(!morkF.KitchenOneStatus||!morkF.KitchenSecondStatus)&&(morkF.CleanComplete|| morkF.SecondCleanComplete))//等待取锅条件满足 | |||||
while (!(!morkF.CleanModule || !morkF.SecondCleanModule) && (!morkF.KitchenOneStatus || !morkF.KitchenSecondStatus) && (morkF.CleanComplete || morkF.SecondCleanComplete))//等待取锅条件满足 | |||||
{ | { | ||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
} | } | ||||
@@ -738,7 +744,11 @@ namespace BPASmartClient.MorkF | |||||
TakePotToKitchen(); | TakePotToKitchen(); | ||||
WriteData("M1.5", false);//清洗模组1完成复位 | WriteData("M1.5", false);//清洗模组1完成复位 | ||||
WriteData("M2.0", false);//清洗模组2完成复位 | WriteData("M2.0", false);//清洗模组2完成复位 | ||||
MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】执行取锅到灶台控制"); | |||||
if (morkF.MainProcessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MainCurrentOrderId}】执行取锅到灶台控制"); | |||||
if (morkF.MinorProessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MinorCurrentOrderId}】执行取锅到灶台控制"); | |||||
while (!morkF.PutPotToKitchenComlete) | while (!morkF.PutPotToKitchenComlete) | ||||
{ | { | ||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
@@ -783,7 +793,7 @@ namespace BPASmartClient.MorkF | |||||
TakeBurden(loc); | TakeBurden(loc); | ||||
TurnReset(loc);//转台复位 | TurnReset(loc);//转台复位 | ||||
MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,执行到转台{loc}位置取料"); | |||||
DeviceProcessLogShow($"订单【{ order.SuborderId}】,执行到转台{loc}位置取料"); | |||||
} | } | ||||
//等待取料完成 | //等待取料完成 | ||||
while (!morkF.TakeMaterialComplete) | while (!morkF.TakeMaterialComplete) | ||||
@@ -810,7 +820,7 @@ namespace BPASmartClient.MorkF | |||||
int loc = order.MaterialLoc; | int loc = order.MaterialLoc; | ||||
TakeBurden(loc); | TakeBurden(loc); | ||||
TurnReset(loc);//转台复位 | TurnReset(loc);//转台复位 | ||||
MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,执行取B料"); | |||||
DeviceProcessLogShow($"订单【{ order.SuborderId}】,执行取B料"); | |||||
} | } | ||||
//等待取料完成 | //等待取料完成 | ||||
while (!morkF.TakeMaterialComplete) | while (!morkF.TakeMaterialComplete) | ||||
@@ -841,9 +851,9 @@ namespace BPASmartClient.MorkF | |||||
int loc = order.MaterialLoc; | int loc = order.MaterialLoc; | ||||
TakeBurden(loc); | TakeBurden(loc); | ||||
TurnReset(loc);//转台复位 | TurnReset(loc);//转台复位 | ||||
MessageLog.GetInstance.Show($"订单【{ order.SuborderId}】,执行取C料"); | |||||
DeviceProcessLogShow($"订单【{ order.SuborderId}】,执行取C料"); | |||||
} | } | ||||
MessageLog.GetInstance.ShowEx($"剩余配料数量{morkF.TakeMaterialQueue.Count}"); | |||||
DeviceProcessLogShow($"剩余配料数量{morkF.TakeMaterialQueue.Count}"); | |||||
//等待取料完成 | //等待取料完成 | ||||
while (!morkF.TakeMaterialComplete) | while (!morkF.TakeMaterialComplete) | ||||
{ | { | ||||
@@ -873,14 +883,17 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
} | } | ||||
if (morkF.TakePlateQueue.Count == 0) | if (morkF.TakePlateQueue.Count == 0) | ||||
{ | { | ||||
WriteData("M0.7", false);//无订单关闭抽风机 | WriteData("M0.7", false);//无订单关闭抽风机 | ||||
} | } | ||||
RobotOutMeal(); | RobotOutMeal(); | ||||
WriteData("M1.2", false);//供盘复位 | WriteData("M1.2", false);//供盘复位 | ||||
MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】正在出餐"); | |||||
if (morkF.MainProcessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MainCurrentOrderId}】执行取锅到灶台控制"); | |||||
if (morkF.MinorProessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MinorCurrentOrderId}】执行取锅到灶台控制"); | |||||
} | } | ||||
@@ -893,7 +906,10 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
} | } | ||||
MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】出餐完成"); | |||||
if (morkF.MainProcessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MainCurrentOrderId}】执行取锅到灶台控制"); | |||||
if (morkF.MinorProessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MinorCurrentOrderId}】执行取锅到灶台控制"); | |||||
WriteData("M14.2", false);//机器人出餐完成复位 | WriteData("M14.2", false);//机器人出餐完成复位 | ||||
//OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COMPLETED_COOK); | //OrderChange(morkF.CurrentOrderId, ORDER_STATUS.COMPLETED_COOK); | ||||
CleanModuleControl("Start"); | CleanModuleControl("Start"); | ||||
@@ -946,7 +962,7 @@ namespace BPASmartClient.MorkF | |||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
} | } | ||||
WriteData("M8.3", false);//下降完成复位 | WriteData("M8.3", false);//下降完成复位 | ||||
MessageLog.GetInstance.Show($"翻转机下降完成"); | |||||
DeviceProcessLogShow($"翻转机下降完成"); | |||||
//if (morkF.MaterialCount == 3 && morkF.MainProcessStatus) | //if (morkF.MaterialCount == 3 && morkF.MainProcessStatus) | ||||
//{ | //{ | ||||
// morkF.MainProcessWait = true; | // morkF.MainProcessWait = true; | ||||
@@ -991,9 +1007,9 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
morkF.MainOrderMaterialCom = true; | morkF.MainOrderMaterialCom = true; | ||||
MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】,配料倒料完成"); | |||||
DeviceProcessLogShow($"订单【{ morkF.MainCurrentOrderId}】,配料倒料完成"); | |||||
} | } | ||||
else //主流程准备阻塞 | |||||
else //辅程准备阻塞 | |||||
{ | { | ||||
morkF.MainProcessWait = true; | morkF.MainProcessWait = true; | ||||
} | } | ||||
@@ -1017,15 +1033,15 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
morkF.MinorOrderMaterialCom = true; | morkF.MinorOrderMaterialCom = true; | ||||
MessageLog.GetInstance.Show($"订单【{ morkF.CurrentOrderId}】,配料倒料完成"); | |||||
DeviceProcessLogShow($"订单【{ morkF.MinorCurrentOrderId}】,配料倒料完成"); | |||||
} | } | ||||
else //辅流程准备阻塞 | |||||
else //主流程准备阻塞 | |||||
{ | { | ||||
morkF.MinorProcessWait = true; | morkF.MinorProcessWait = true; | ||||
} | } | ||||
} | } | ||||
MessageLog.GetInstance.Show("翻转机上升完成"); | |||||
DeviceProcessLogShow("翻转机上升完成"); | |||||
} | } | ||||
private void GetStatus(string key, Action<bool[]> action) | private void GetStatus(string key, Action<bool[]> action) | ||||
@@ -1088,8 +1104,10 @@ namespace BPASmartClient.MorkF | |||||
break; | break; | ||||
} | } | ||||
MessageLog.GetInstance.Show($"订单【{morkF.CurrentOrderId}】,加热档位调至{number}挡"); | |||||
if (morkF.MainProcessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MainCurrentOrderId}】执行取锅到灶台控制"); | |||||
if (morkF.MinorProessStatus) | |||||
DeviceProcessLogShow($"订单【{ morkF.MinorCurrentOrderId}】执行取锅到灶台控制"); | |||||
} | } | ||||
public void TurnMaterialStore(int loc) | public void TurnMaterialStore(int loc) | ||||
{ | { | ||||
@@ -1151,12 +1169,12 @@ namespace BPASmartClient.MorkF | |||||
WriteData("M2.7", true);//加油 | WriteData("M2.7", true);//加油 | ||||
WriteData("M0.7", true);//打开抽风机 | WriteData("M0.7", true);//打开抽风机 | ||||
MessageLog.GetInstance.Show("开始注油"); | |||||
DeviceProcessLogShow("开始注油"); | |||||
while (!morkF.FallOilComplete) | while (!morkF.FallOilComplete) | ||||
{ | { | ||||
Task.Delay(5).Wait(); | Task.Delay(5).Wait(); | ||||
} | } | ||||
MessageLog.GetInstance.Show("注油完成"); | |||||
DeviceProcessLogShow("注油完成"); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -1171,7 +1189,7 @@ namespace BPASmartClient.MorkF | |||||
// case "Middle": WriteData("", 1); break; | // case "Middle": WriteData("", 1); break; | ||||
case "Down": WriteData("M8.2", true); break; | case "Down": WriteData("M8.2", true); break; | ||||
} | } | ||||
MessageLog.GetInstance.Show($"翻转机执行{orientation}操作"); | |||||
DeviceProcessLogShow($"翻转机执行{orientation}操作"); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 翻转机档位控制 | /// 翻转机档位控制 | ||||
@@ -1189,7 +1207,7 @@ namespace BPASmartClient.MorkF | |||||
case 2: WriteData("M7.2", true); break;//翻炒机2挡 | case 2: WriteData("M7.2", true); break;//翻炒机2挡 | ||||
case 3: WriteData("M7.3", true); break;//翻炒机3挡 | case 3: WriteData("M7.3", true); break;//翻炒机3挡 | ||||
} | } | ||||
MessageLog.GetInstance.Show($"翻转机档位调至{gear}挡"); | |||||
DeviceProcessLogShow($"翻转机档位调至{gear}挡"); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 取A,B,C料 | /// 取A,B,C料 | ||||
@@ -1211,7 +1229,7 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
WriteData("M1.4", false); | WriteData("M1.4", false); | ||||
} | } | ||||
MessageLog.GetInstance.Show($"清洗模组执行【{status}】操作"); | |||||
DeviceProcessLogShow($"清洗模组执行【{status}】操作"); | |||||
} | } | ||||
public override void Stop() | public override void Stop() | ||||
@@ -91,9 +91,13 @@ namespace BPASmartClient.MorkF | |||||
/// </summary> | /// </summary> | ||||
public ConcurrentQueue<OrderLocInfo> TakePlateQueue = new ConcurrentQueue<OrderLocInfo>(); | public ConcurrentQueue<OrderLocInfo> TakePlateQueue = new ConcurrentQueue<OrderLocInfo>(); | ||||
/// <summary> | /// <summary> | ||||
/// 存放当前订单唯一ID | |||||
/// 存放主流程当前订单唯一ID | |||||
/// </summary> | /// </summary> | ||||
public string CurrentOrderId { get; set; } | |||||
public string MainCurrentOrderId { get; set; } | |||||
/// <summary> | |||||
/// 存放辅流程当前订单唯一ID | |||||
/// </summary> | |||||
public string MinorCurrentOrderId { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// PLC上升沿初始化触发信号 | /// PLC上升沿初始化触发信号 | ||||
/// </summary> | /// </summary> | ||||
@@ -0,0 +1,45 @@ | |||||
<UserControl x:Class="BPASmartClient.MorkF.View.DebugView" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkF.View" | |||||
mc:Ignorable="d" | |||||
d:DesignHeight="450" d:DesignWidth="800"> | |||||
<UserControl.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" /> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" /> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</UserControl.Resources> | |||||
<Grid> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="60"></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
</Grid.RowDefinitions> | |||||
<StackPanel Orientation="Horizontal" Grid.Row="0"> | |||||
<Button Content="初始化" Command="{Binding PlcInite}" Margin="10,0,10,0" Cursor="Hand"></Button> | |||||
<Button Content="模拟订单" Command="{Binding SimulateOrder}" Margin="10,0,10,0"></Button> | |||||
<Button Content="手撕包菜" Command="{Binding ShreddCabbage}" Margin="10,0,10,0"></Button> | |||||
<Button Content="盐煎肉" Command="{Binding FryPork}" Margin="10,0,10,0"></Button> | |||||
<Button Content="酱烧杏鲍菇" Command="{Binding XingBaoGu}" Margin="10,0,10,0"></Button> | |||||
</StackPanel> | |||||
<StackPanel Orientation="Horizontal" Grid.Row="1"> | |||||
<Button Content="取锅" Command="{Binding TakePot}" Margin="10,0,10,0"></Button> | |||||
<Button Content="取锅复位" Command="{Binding TakePotReset}" Margin="10,0,10,0"></Button> | |||||
<Button Content="加热关闭" Command="{Binding TempTurnOff}" Margin="10,0,10,0"></Button> | |||||
<Button Content="加热1挡" Command="{Binding OneBlock}" Margin="10,0,10,0"></Button> | |||||
<Button Content="加热2挡" Command="{Binding TwoBlock}" Margin="10,0,10,0"></Button> | |||||
<Button Content="加热3挡" Command="{Binding ThreeBlock}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机关闭" Command="{Binding OverTurnOff}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机上升" Command="{Binding OverGoOn}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机下降" Command="{Binding OverGoDown}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机1挡" Command="{Binding OverOneBlock}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机2挡" Command="{Binding OverTwoBlock}" Margin="10,0,10,0"></Button> | |||||
<Button Content="翻炒机3挡" Command="{Binding OverThreeBlock}" Margin="10,0,10,0"></Button> | |||||
</StackPanel> | |||||
</Grid> | |||||
</UserControl> |
@@ -0,0 +1,30 @@ | |||||
using BPASmartClient.MorkF.ViewModel; | |||||
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.MorkF.View | |||||
{ | |||||
/// <summary> | |||||
/// DebugView.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class DebugView : UserControl | |||||
{ | |||||
public DebugView() | |||||
{ | |||||
InitializeComponent(); | |||||
this.DataContext = new DebugViewModel(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,55 @@ | |||||
using BPASmartClient.Helper; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkF.ViewModel | |||||
{ | |||||
internal class DebugViewModel : ObservableObject | |||||
{ | |||||
public RelayCommand PlcInite { get; set; } | |||||
public RelayCommand SimulateOrder { get; set; } | |||||
public RelayCommand TakePot { get; set; } | |||||
public RelayCommand TakePotReset { get; set; } | |||||
public RelayCommand TempTurnOff { get; set; } | |||||
public RelayCommand OneBlock { get; set; } | |||||
public RelayCommand TwoBlock { get; set; } | |||||
public RelayCommand ThreeBlock { get; set; } | |||||
public RelayCommand OverTurnOff { get; set; } | |||||
public RelayCommand OverOneBlock { get; set; } | |||||
public RelayCommand OverTwoBlock { get; set; } | |||||
public RelayCommand OverThreeBlock { get; set; } | |||||
public RelayCommand OverGoOn { get; set; } | |||||
public RelayCommand OverGoDown { get; set; } | |||||
public RelayCommand ShreddCabbage { get; set; } | |||||
public RelayCommand FryPork { get; set; } | |||||
public RelayCommand XingBaoGu { get; set; } | |||||
public DebugViewModel() | |||||
{ | |||||
PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | |||||
SimulateOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("SimultaorOrder"); }); | |||||
TakePot = new RelayCommand(() => { ActionManage.GetInstance.Send("TakePot"); }); | |||||
TakePotReset = new RelayCommand(() => { ActionManage.GetInstance.Send("TakePotReset"); }); | |||||
TempTurnOff = new RelayCommand(() => { ActionManage.GetInstance.Send("TakeOff"); }); | |||||
OneBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("OneBlock"); }); | |||||
TwoBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("TwoBlock"); }); | |||||
ThreeBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("ThreeBlock"); }); | |||||
OverTurnOff = new RelayCommand(() => { ActionManage.GetInstance.Send("OverTurnOff"); }); | |||||
OverOneBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("OverOneBlock"); }); | |||||
OverTwoBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("OverTwoBlock"); }); | |||||
OverThreeBlock = new RelayCommand(() => { ActionManage.GetInstance.Send("OverThreeBlock"); }); | |||||
OverGoOn = new RelayCommand(() => { ActionManage.GetInstance.Send("OverGoOn"); }); | |||||
OverGoDown = new RelayCommand(() => { ActionManage.GetInstance.Send("OverGoDown"); }); | |||||
ShreddCabbage = new RelayCommand(() => { ActionManage.GetInstance.Send("ShreddCabbage"); }); | |||||
FryPork = new RelayCommand(() => { ActionManage.GetInstance.Send("FryPork"); }); | |||||
XingBaoGu = new RelayCommand(() => { ActionManage.GetInstance.Send("XingBaoGu"); }); | |||||
} | |||||
} | |||||
} |
@@ -7,13 +7,12 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" /> | |||||
<ProjectReference Include="..\BPASmartClient.CustomResource\BPASmartClient.CustomResource.csproj" /> | |||||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | <ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Compile Update="View\Debug.xaml.cs"> | |||||
<SubType>Code</SubType> | |||||
</Compile> | |||||
<Compile Update="View\Monitor.xaml.cs"> | <Compile Update="View\Monitor.xaml.cs"> | ||||
<SubType>Code</SubType> | <SubType>Code</SubType> | ||||
</Compile> | </Compile> | ||||
@@ -23,10 +22,6 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Page Update="View\Debug.xaml"> | |||||
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | |||||
<SubType>Designer</SubType> | |||||
</Page> | |||||
<Page Update="View\Monitor.xaml"> | <Page Update="View\Monitor.xaml"> | ||||
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime> | ||||
<SubType>Designer</SubType> | <SubType>Designer</SubType> | ||||
@@ -11,231 +11,81 @@ using BPA.Message.Enum; | |||||
using BPASmartClient.Model; | using BPASmartClient.Model; | ||||
using BPASmartClient.EventBus; | using BPASmartClient.EventBus; | ||||
using static BPASmartClient.EventBus.EventBus; | using static BPASmartClient.EventBus.EventBus; | ||||
using BPASmartClient.MorkS.ViewModel; | |||||
using BPASmartClient.MorkM.Model; | using BPASmartClient.MorkM.Model; | ||||
using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||
using BPASmartClient.Model.PLC; | using BPASmartClient.Model.PLC; | ||||
using BPASmartClient.MorkM.ViewModel; | |||||
namespace BPASmartClient.MorkM | namespace BPASmartClient.MorkM | ||||
{ | { | ||||
public class Control_MORKM : BaseDevice | public class Control_MORKM : BaseDevice | ||||
{ | { | ||||
public override DeviceClientType DeviceType => DeviceClientType.MORKM; | |||||
GVL_MORKM mORKS = new GVL_MORKM(); | GVL_MORKM mORKS = new GVL_MORKM(); | ||||
Alarm alarm = new Alarm(); | Alarm alarm = new Alarm(); | ||||
HardwareStatus hardwareStatus = new HardwareStatus(); | HardwareStatus hardwareStatus = new HardwareStatus(); | ||||
public void Init() | |||||
{ | |||||
ActionManage.GetInstance.Register(new Action(() => { WriteRecipeBoms(); }), "recipeBom"); | |||||
ActionManage.GetInstance.Register(new Action(() => { DeviceInit(); }), "InitCommand"); | |||||
} | |||||
//public void ConnectOk() | |||||
//{ | |||||
// WriteRecipeBoms(); | |||||
// ReadData(); | |||||
// Main(); | |||||
// ResetProgram(); | |||||
// ActionManage.GetInstance.Register(new Action(() => | |||||
// { | |||||
// Random rd = new Random(); | |||||
// ThreadManage.GetInstance().StartLong(new Action(() => | |||||
// { | |||||
// int NoodleLoc = rd.Next(1, 6); | |||||
// int BowlLoc = rd.Next(10, 11); | |||||
// string guid = new Guid().ToString(); | |||||
// mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() { Loc = (ushort)NoodleLoc, SuborderId = guid }); | |||||
// DeviceProcessLogShow($"添加订单:面条位置【{NoodleLoc}】"); | |||||
// mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() { Loc = (ushort)BowlLoc, SuborderId = guid }); | |||||
// DeviceProcessLogShow($"添加订单:碗位置【{BowlLoc}】"); | |||||
// Thread.Sleep(60000); | |||||
// }), "ForOrder"); | |||||
// }), "EnableForOrder"); | |||||
// ActionManage.GetInstance.Register(new Action(() => | |||||
// { | |||||
// ThreadManage.GetInstance.StopTask("ForOrder", new Action(() => | |||||
// { | |||||
// mORKS.RBTakeNoodleTask.Clear(); | |||||
// mORKS.TakeBowlTask.Clear(); | |||||
// })); | |||||
// }), "StopForOrder"); | |||||
// DeviceProcessLogShow("MORKM 设备初始化完成"); | |||||
//} | |||||
//private void ResetProgram() | |||||
//{ | |||||
// ThreadManage.GetInstance.StartLong(new Action(() => | |||||
// { | |||||
// if (RTrig.GetInstance("ResetProgram").Start(DeviceData.Initing)) | |||||
// { | |||||
// ThreadManage.GetInstance.StopTask("MainTask", new Action(() => | |||||
// { | |||||
// ThreadManage.GetInstance.StopTask("ReadPLCData", new Action(() => | |||||
// { | |||||
// mORKS = null; | |||||
// mORKS = new GVL_MORKM(); | |||||
// ActionManage.GetInstance.Send("ResetProgram"); | |||||
// ActionManage.GetInstance.Send("ClearOrders"); | |||||
// ReadData(); | |||||
// Main(); | |||||
// })); | |||||
// })); | |||||
// } | |||||
// Thread.Sleep(10); | |||||
// }), "ResetProgram"); | |||||
//} | |||||
/// <summary> | |||||
/// 数据读取 | |||||
/// </summary> | |||||
//public void ReadData() | |||||
//{ | |||||
// ThreadManage.GetInstance.StartLong(new Action(() => | |||||
// { | |||||
// ModbusTcpHelper.GetInstance.Readbool(323, 3, new Action<bool[]>((bools) => | |||||
// { | |||||
// mORKS.RobotTakeNoodle = bools[0]; | |||||
// mORKS.RobotOutMeal = bools[1]; | |||||
// mORKS.MoveTurntable = bools[2]; | |||||
// })); | |||||
// ModbusTcpHelper.GetInstance.Readbool(1120, 16, new Action<bool[]>((bools) => | |||||
// { | |||||
// mORKS.InitComplete = bools[0]; | |||||
// mORKS.TakeBowlIdle = bools[1]; | |||||
// mORKS.TemperatureReached = bools[2]; | |||||
// mORKS.AllowFallNoodle = bools[3]; | |||||
// mORKS.RbTakeNoodleComplete = bools[4]; | |||||
// mORKS.RbFallNoodleComplete = bools[5]; | |||||
// mORKS.RbOutMealComplete = bools[6]; | |||||
// mORKS.RobotIdle = bools[7]; | |||||
// mORKS.TakeMealDetect = bools[8]; | |||||
// mORKS.MissingBowl = bools[9]; | |||||
// DeviceData.Initing = bools[10]; | |||||
// mORKS.TurntableLowerLimit = bools[11]; | |||||
// mORKS.MissingBowlSignal2 = bools[12]; | |||||
// mORKS.TurntableUpLimit = bools[13]; | |||||
// mORKS.FeedComplete = bools[14]; | |||||
// mORKS.TurntableMoveInPlace = bools[15]; | |||||
// })); | |||||
// var errorStatus = ModbusTcpHelper.GetInstance.Read((ushort)ModbusTcpHelper.GetInstance.GetBoolAddress("M235.0"), ReadType.Coils, 1); | |||||
// if (errorStatus != null && errorStatus is bool error) mORKS.Error = error; | |||||
// ModbusTcpHelper.GetInstance.Readbool(1136, 7, new Action<bool[]>((bools) => | |||||
// { | |||||
// for (int i = 0; i < 6; i++) | |||||
// { | |||||
// mORKS.NoodleCookerStatus[i] = bools[i]; | |||||
// } | |||||
// mORKS.Feeding = bools[6]; | |||||
// })); | |||||
// ModbusTcpHelper.GetInstance.Readbool(1144, 6, new Action<bool[]>((bools) => | |||||
// { | |||||
// for (int i = 0; i < 6; i++) | |||||
// { | |||||
// mORKS.CookNoodlesComplete[i] = bools[i]; | |||||
// } | |||||
// })); | |||||
// ModbusTcpHelper.GetInstance.Readbool(1570, 20, new Action<bool[]>((bools) => | |||||
// { | |||||
// alarm.MachineLeftLowTemperature = bools[0]; | |||||
// alarm.MachineRightLowTemperature = bools[1]; | |||||
// alarm.Supply1_LossBowl = bools[2]; | |||||
// alarm.Supply2_LossBowl = bools[3]; | |||||
// alarm.Supply1_ErrorOutBowl = bools[4]; | |||||
// alarm.Supply2_ErrorOutBowl = bools[5]; | |||||
// alarm.PushBowlCylinderError = bools[6]; | |||||
// alarm.NoodleMacCommunicateError = bools[7]; | |||||
// alarm.DosingMacCommunicateError = bools[8]; | |||||
// alarm.RobotMacCommunicateError = bools[9]; | |||||
// alarm.RobotInitError = bools[11]; | |||||
// alarm.RobotUrgentStop = bools[12]; | |||||
// alarm.RobotNotInRemoteMode = bools[13]; | |||||
// alarm.RobotNotInReady = bools[14]; | |||||
// alarm.RobotSelfInException = bools[15]; | |||||
// })); | |||||
// var ResLoc = ModbusTcpHelper.GetInstance.Read(286, ReadType.HoldingRegisters); | |||||
// if (ResLoc != null) | |||||
// { | |||||
// if (ResLoc is ushort loc) | |||||
// { | |||||
// mORKS.TurntableFeedbackloc = loc; | |||||
// } | |||||
// } | |||||
// Thread.Sleep(500); | |||||
// }), "ReadPLCData"); | |||||
//} | |||||
//public void SimOrder<T>(T simOrder) | |||||
//{ | |||||
public void SimOrder<T>(T simOrder) | |||||
{ | |||||
// if (simOrder != null) | |||||
// { | |||||
if (simOrder != null) | |||||
{ | |||||
// if (simOrder is List<ushort> locs) | |||||
// { | |||||
// OrderInformation newOrder = new OrderInformation();//新加 | |||||
// List<OrderLocInfo> orders = new List<OrderLocInfo>(); | |||||
// string subId = Guid.NewGuid().ToString(); | |||||
// foreach (var item in locs) | |||||
// { | |||||
// if (item >= 1 && item <= 5) | |||||
// { | |||||
// orders.Add(new OrderLocInfo() { Loc = item, SuborderId = subId, MakeType = false }); | |||||
// //mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() { Loc = item, SuborderId = subId }); | |||||
// //DeviceProcessLogShow($"添加订单:面条位置【{item}】"); | |||||
// } | |||||
// if (item >= 10 && item <= 11) | |||||
// { | |||||
// mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() { Loc = item, SuborderId = subId, MakeType = false }); | |||||
// DeviceProcessLogShow($"添加订单:碗位置【{item}】"); | |||||
// } | |||||
// } | |||||
// mORKS.DishNumber = orders.Count;//订单中配菜的数量 | |||||
// while (orders.Count > 0) | |||||
// { | |||||
// for (int i = 0; i < orders.Count; i++) | |||||
// { | |||||
// var res = orders.FirstOrDefault(p => p.Loc % 2 != 0); | |||||
// if (res != null) | |||||
// { | |||||
// //if (mORKS.RBTakeNoodleTask.FirstOrDefault(p => p.SuborderId == res.SuborderId) == null) | |||||
// mORKS.RBTakeNoodleTask.Enqueue(res); | |||||
if (simOrder is List<ushort> locs) | |||||
{ | |||||
OrderInformation newOrder = new OrderInformation();//新加 | |||||
List<OrderLocInfo> orders = new List<OrderLocInfo>(); | |||||
string subId = Guid.NewGuid().ToString(); | |||||
foreach (var item in locs) | |||||
{ | |||||
if (item >= 1 && item <= 5) | |||||
{ | |||||
orders.Add(new OrderLocInfo() { Loc = item, SuborderId = subId, MakeType = false }); | |||||
//mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() { Loc = item, SuborderId = subId }); | |||||
//DeviceProcessLogShow($"添加订单:面条位置【{item}】"); | |||||
} | |||||
if (item >= 10 && item <= 11) | |||||
{ | |||||
mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() { Loc = item, SuborderId = subId, MakeType = false }); | |||||
DeviceProcessLogShow($"添加订单:碗位置【{item}】"); | |||||
} | |||||
} | |||||
mORKS.DishNumber = orders.Count;//订单中配菜的数量 | |||||
while (orders.Count > 0) | |||||
{ | |||||
for (int i = 0; i < orders.Count; i++) | |||||
{ | |||||
var res = orders.FirstOrDefault(p => p.Loc % 2 != 0); | |||||
if (res != null) | |||||
{ | |||||
//if (mORKS.RBTakeNoodleTask.FirstOrDefault(p => p.SuborderId == res.SuborderId) == null) | |||||
mORKS.RBTakeNoodleTask.Enqueue(res); | |||||
// orders.Remove(res); | |||||
orders.Remove(res); | |||||
// } | |||||
// else | |||||
// { | |||||
// //if (mORKS.RBTakeNoodleTask.FirstOrDefault(p => p.SuborderId == orders[i].SuborderId) == null) | |||||
// mORKS.RBTakeNoodleTask.Enqueue(orders[i]); | |||||
// mORKS.VegtabNum++; | |||||
// orders.RemoveAt(i); | |||||
} | |||||
else | |||||
{ | |||||
//if (mORKS.RBTakeNoodleTask.FirstOrDefault(p => p.SuborderId == orders[i].SuborderId) == null) | |||||
mORKS.RBTakeNoodleTask.Enqueue(orders[i]); | |||||
mORKS.VegtabNum++; | |||||
orders.RemoveAt(i); | |||||
// } | |||||
// } | |||||
// } | |||||
// Dictionary<string, OrderInformation> dic = new Dictionary<string, OrderInformation>(); | |||||
// newOrder.DishNum = mORKS.DishNumber; | |||||
// newOrder.VegatableNumber = mORKS.VegtabNum; | |||||
// dic.Add(subId, newOrder); | |||||
// mORKS.Conqueue.Enqueue(dic); | |||||
// mORKS.VegtabNum = 0; | |||||
// mORKS.DishNumber = 0; | |||||
// } | |||||
// } | |||||
//} | |||||
} | |||||
} | |||||
} | |||||
Dictionary<string, OrderInformation> dic = new Dictionary<string, OrderInformation>(); | |||||
newOrder.DishNum = mORKS.DishNumber; | |||||
newOrder.VegatableNumber = mORKS.VegtabNum; | |||||
dic.Add(subId, newOrder); | |||||
mORKS.Conqueue.Enqueue(dic); | |||||
mORKS.VegtabNum = 0; | |||||
mORKS.DishNumber = 0; | |||||
} | |||||
} | |||||
} | |||||
///// <summary> | ///// <summary> | ||||
///// IOT 广播消息命令 | ///// IOT 广播消息命令 | ||||
@@ -282,9 +132,6 @@ namespace BPASmartClient.MorkM | |||||
//} | //} | ||||
int OrderCount = 0; | int OrderCount = 0; | ||||
public override DeviceClientType DeviceType => DeviceClientType.MORKM; | |||||
///// <summary> | ///// <summary> | ||||
///// 数据解析 | ///// 数据解析 | ||||
///// </summary> | ///// </summary> | ||||
@@ -378,26 +225,25 @@ namespace BPASmartClient.MorkM | |||||
}); | }); | ||||
} | } | ||||
public void Main() | |||||
public override void MainTask() | |||||
{ | { | ||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
// mORKS.AllowRun = mORKS.InitComplete; | |||||
// GeneralConfig.Healthy = mORKS.Error && mORKS.InitComplete && !GeneralConfig.EnableLocalSimOrder; | |||||
// //GeneralConfig.Healthy = true; | |||||
// TakeBowlTask(); | |||||
// TakeNoodleTask(); | |||||
mORKS.AllowRun = mORKS.InitComplete; | |||||
if (Json<KeepDataBase>.Data.IsVerify) | |||||
IsHealth = mORKS.Error && mORKS.InitComplete; | |||||
else | |||||
IsHealth = true; | |||||
// OutNoodleTask(); | |||||
//if (mORKS.AllowRun) | |||||
//{ | |||||
TakeBowlTask(); | |||||
// SingleDetect(); | |||||
TakeNoodleTask(); | |||||
// TurntableControl(); | |||||
OutNoodleTask(); | |||||
// Thread.Sleep(100); | |||||
SingleDetect(); | |||||
//}), "MainTask"); | |||||
TurntableControl(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -425,24 +271,24 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void TurntableControl() | private void TurntableControl() | ||||
{ | { | ||||
//if (GeneralConfig.EnableLocalSimOrder) | |||||
//{ | |||||
// //不做轮询,直接取面,模拟订单使用 | |||||
// if (mORKS.TurntableMoveInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) | |||||
// { | |||||
// if (mORKS.TurntableLowerLimit) | |||||
// { | |||||
// TurntableStart(mORKS.RBTakeNoodleTask.ElementAt(0).Loc); | |||||
// if (mORKS.RBTakeNoodleTask.ElementAt(0).Loc == mORKS.TurntableFeedbackloc) | |||||
// { | |||||
// mORKS.TurntableLocLists.Clear(); | |||||
// mORKS.AllowTakeNoodle = true; | |||||
// DeviceProcessLogShow($"控制机器人去转台【{mORKS.RBTakeNoodleTask.ElementAt(0).Loc}】号位置取面"); | |||||
// } | |||||
// } | |||||
// } | |||||
//} | |||||
//else | |||||
if (GeneralConfig.EnableLocalSimOrder) | |||||
{ | |||||
//不做轮询,直接取面,模拟订单使用 | |||||
if (mORKS.TurntableMoveInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) | |||||
{ | |||||
if (mORKS.TurntableLowerLimit) | |||||
{ | |||||
TurntableStart(mORKS.RBTakeNoodleTask.ElementAt(0).Loc); | |||||
if (mORKS.RBTakeNoodleTask.ElementAt(0).Loc == mORKS.TurntableFeedbackloc) | |||||
{ | |||||
mORKS.TurntableLocLists.Clear(); | |||||
mORKS.AllowTakeNoodle = true; | |||||
DeviceProcessLogShow($"控制机器人去转台【{mORKS.RBTakeNoodleTask.ElementAt(0).Loc}】号位置取面"); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
else | |||||
{ | { | ||||
//正常轮询 | //正常轮询 | ||||
if (mORKS.TurntableMoveInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) | if (mORKS.TurntableMoveInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) | ||||
@@ -453,7 +299,6 @@ namespace BPASmartClient.MorkM | |||||
var res = result.FirstOrDefault(P => P.BatchingLoc == mORKS.TurntableFeedbackloc.ToString()); | var res = result.FirstOrDefault(P => P.BatchingLoc == mORKS.TurntableFeedbackloc.ToString()); | ||||
if (mORKS.TurntableLowerLimit && res != null) | if (mORKS.TurntableLowerLimit && res != null) | ||||
{ | { | ||||
//if (mORKS.RBTakeNoodleTask.ElementAt(0).Loc != mORKS.TurntableFeedbackloc) | |||||
TurntableStart(mORKS.TurntableFeedbackloc); | TurntableStart(mORKS.TurntableFeedbackloc); | ||||
mORKS.TurntableLocLists.Clear(); | mORKS.TurntableLocLists.Clear(); | ||||
mORKS.AllowTakeNoodle = true; | mORKS.AllowTakeNoodle = true; | ||||
@@ -532,7 +377,6 @@ namespace BPASmartClient.MorkM | |||||
{ | { | ||||
values.Add(2);//分 | values.Add(2);//分 | ||||
values.Add(0);//秒 | values.Add(0);//秒 | ||||
// //ModbusTcpHelper.GetInstance.Write((ushort)ModbusTcpHelper.GetInstance.GetWordAddress($"VW{116 + (loc * 6)}"), WriteType.HoldingRegisters, values.ToArray()); | |||||
EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address =$"VW{ 116 + (loc * 6) }" , Value = values.ToArray() }); | EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address =$"VW{ 116 + (loc * 6) }" , Value = values.ToArray() }); | ||||
} | } | ||||
else //荤菜 | else //荤菜 | ||||
@@ -780,8 +624,8 @@ namespace BPASmartClient.MorkM | |||||
private void WriteRecipeBoms() | private void WriteRecipeBoms() | ||||
{ | { | ||||
List<ushort> recipeBoms = new List<ushort>(); | List<ushort> recipeBoms = new List<ushort>(); | ||||
if (Json<BatchingInfoPar>.Data.recipeBoms == null) return; | |||||
foreach (var item in Json<BatchingInfoPar>.Data.recipeBoms.RecipeIds) | |||||
if (this.recipeBoms == null) return; | |||||
foreach (var item in this.recipeBoms.RecipeIds) | |||||
{ | { | ||||
foreach (var rec in item.Recipes) | foreach (var rec in item.Recipes) | ||||
{ | { | ||||
@@ -790,10 +634,9 @@ namespace BPASmartClient.MorkM | |||||
} | } | ||||
if (recipeBoms.Count > 0) | if (recipeBoms.Count > 0) | ||||
{ | { | ||||
//if (//ModbusTcpHelper.GetInstance.Write(1100, WriteType.HoldingRegisters, recipeBoms.ToArray())) | |||||
//{ | |||||
// DeviceProcessLogShow("成功写入配方数据"); | |||||
//} | |||||
//配方数据地址范围:VW2000 - VW2278 | |||||
WriteData("VW2000", recipeBoms.ToArray()); | |||||
DeviceProcessLogShow("写配方成功"); | |||||
} | } | ||||
else { DeviceProcessLogShow("配方数据为空"); } | else { DeviceProcessLogShow("配方数据为空"); } | ||||
} | } | ||||
@@ -803,7 +646,7 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void TakeNoodleCompleteReset() | private void TakeNoodleCompleteReset() | ||||
{ | { | ||||
////ModbusTcpHelper.GetInstance.Write(1124, WriteType.Coils, false); | |||||
WriteData("M100.4", false); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -814,8 +657,7 @@ namespace BPASmartClient.MorkM | |||||
{ | { | ||||
if (num >= 1 && num <= 6) | if (num >= 1 && num <= 6) | ||||
{ | { | ||||
ushort addRess = (ushort)(1136 + num - 1); | |||||
//ModbusTcpHelper.GetInstance.Write(addRess, WriteType.Coils, false); | |||||
WriteData($"102.{num - 1}", false); | |||||
DeviceProcessLogShow($"{num}号煮面口占用复位"); | DeviceProcessLogShow($"{num}号煮面口占用复位"); | ||||
} | } | ||||
@@ -827,7 +669,7 @@ namespace BPASmartClient.MorkM | |||||
/// <param name="num"></param> | /// <param name="num"></param> | ||||
private void SetRecipeNumber(ushort num) | private void SetRecipeNumber(ushort num) | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(100, WriteType.HoldingRegisters, num); | |||||
WriteData("VW0", num); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -839,8 +681,8 @@ namespace BPASmartClient.MorkM | |||||
mORKS.CurrentLoc = loc; | mORKS.CurrentLoc = loc; | ||||
mORKS.TurntableInterlock = true; | mORKS.TurntableInterlock = true; | ||||
mORKS.TurntableLocLists.Add(loc); | mORKS.TurntableLocLists.Add(loc); | ||||
//ModbusTcpHelper.GetInstance.Write(101, WriteType.HoldingRegisters, loc); | |||||
//ModbusTcpHelper.GetInstance.Write(325, WriteType.Coils, true); | |||||
WriteData("VW2", loc); | |||||
WriteData("M0.5", true); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -849,7 +691,7 @@ namespace BPASmartClient.MorkM | |||||
/// <param name="loc"></param> | /// <param name="loc"></param> | ||||
private void SetFallNoodleLoc(ushort loc) | private void SetFallNoodleLoc(ushort loc) | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(102, WriteType.HoldingRegisters, loc); | |||||
WriteData("VW4", loc); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -858,7 +700,7 @@ namespace BPASmartClient.MorkM | |||||
/// <param name="loc"></param> | /// <param name="loc"></param> | ||||
private void SetTakeNoodleLoc(ushort loc) | private void SetTakeNoodleLoc(ushort loc) | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(103, WriteType.HoldingRegisters, loc); | |||||
WriteData("VW6", loc); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -869,11 +711,11 @@ namespace BPASmartClient.MorkM | |||||
{ | { | ||||
if (loc == 10)//小碗 | if (loc == 10)//小碗 | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(321, WriteType.Coils, true); | |||||
WriteData("M0.1", true); | |||||
} | } | ||||
else if (loc == 11)//大碗 | else if (loc == 11)//大碗 | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(322, WriteType.Coils, true); | |||||
WriteData("M0.2", true); | |||||
} | } | ||||
} | } | ||||
@@ -882,7 +724,7 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void RobotTakeNoodle() | private void RobotTakeNoodle() | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(323, WriteType.Coils, true); | |||||
WriteData("M0.3", true); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -890,13 +732,7 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void RobotOutMeal() | private void RobotOutMeal() | ||||
{ | { | ||||
// ModbusTcpHelper.GetInstance.Write(324, WriteType.Coils, true); | |||||
// var result = ModbusTcpHelper.GetInstance.Read(324, ReadType.Coils); | |||||
//if (result is bool res) | |||||
// while (!res) | |||||
// { | |||||
//ModbusTcpHelper.GetInstance.Write(324, WriteType.Coils, true); | |||||
// } | |||||
WriteData("M0.4", true); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -904,7 +740,7 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void ResetCookComplete() | private void ResetCookComplete() | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(1126, WriteType.Coils, false); | |||||
WriteData("M100.6", false); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -912,7 +748,7 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
private void ResetAllowFallNoodle() | private void ResetAllowFallNoodle() | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(1123, WriteType.Coils, false); | |||||
WriteData("M100.3", false); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -920,9 +756,9 @@ namespace BPASmartClient.MorkM | |||||
/// </summary> | /// </summary> | ||||
public async void DeviceInit() | public async void DeviceInit() | ||||
{ | { | ||||
//ModbusTcpHelper.GetInstance.Write(320, WriteType.Coils, true); | |||||
WriteData("M0.0", true); | |||||
await Task.Delay(1000); | await Task.Delay(1000); | ||||
//ModbusTcpHelper.GetInstance.Write(320, WriteType.Coils, false); | |||||
WriteData("M0.0", false); | |||||
} | } | ||||
@@ -1000,7 +836,9 @@ namespace BPASmartClient.MorkM | |||||
{ | { | ||||
if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value); | if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value); | ||||
}), "WriteBools"); | }), "WriteBools"); | ||||
ActionManage.GetInstance.Register(new Action(() => { DeviceInit(); }), "InitDevice"); | |||||
ActionManage.GetInstance.Register(new Action(() => { DeviceInit(); }), "InitDevice");//设备初始化注册 | |||||
ActionManage.GetInstance.Register(new Action<object>((o) => {SimOrder(o); }), "SimOrder");//模拟订单委托注册 | |||||
} | } | ||||
private void WriteData(string address, object value) | private void WriteData(string address, object value) | ||||
{ | { | ||||
@@ -1039,7 +877,7 @@ namespace BPASmartClient.MorkM | |||||
public override void Stop() | public override void Stop() | ||||
{ | { | ||||
throw new NotImplementedException(); | |||||
} | } | ||||
public override void ReadData() | public override void ReadData() | ||||
@@ -1149,11 +987,7 @@ namespace BPASmartClient.MorkM | |||||
})); | })); | ||||
} | } | ||||
public override void MainTask() | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
#endregion | #endregion | ||||
@@ -0,0 +1,16 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM.Model | |||||
{ | |||||
internal class GeneralConfig | |||||
{ | |||||
/// <summary> | |||||
/// 激活本地模拟订单 | |||||
/// </summary> | |||||
public static bool EnableLocalSimOrder { get; set; } | |||||
} | |||||
} |
@@ -1,32 +0,0 @@ | |||||
<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,154 @@ | |||||
<UserControl x:Class="BPASmartClient.MorkM.View.DebugView" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
Name="调试界面" | |||||
mc:Ignorable="d" | |||||
d:DesignHeight="450" d:DesignWidth="800"> | |||||
<UserControl.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" /> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" /> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</UserControl.Resources> | |||||
<Grid> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="400" /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | |||||
<Grid Grid.Column="0"> | |||||
<!--<Grid.RowDefinitions> | |||||
<RowDefinition /> | |||||
<RowDefinition Height="40" /> | |||||
</Grid.RowDefinitions>--> | |||||
<StackPanel Orientation="Vertical"> | |||||
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> | |||||
<ItemsControl ItemsSource="{Binding simOrderConfig}"> | |||||
<ItemsControl.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid Margin="0,10"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock | |||||
HorizontalAlignment="Right" | |||||
VerticalAlignment="Center" | |||||
FontSize="14" | |||||
Foreground="#00c2f4" | |||||
Text="{Binding Text}" /> | |||||
<TextBox | |||||
Grid.Column="1" | |||||
Margin="10,0" | |||||
IsEnabled="{Binding IsEnable}" | |||||
Text="{Binding Loc}" /> | |||||
<CheckBox | |||||
Grid.Column="2" | |||||
Height="20" | |||||
VerticalAlignment="Center" | |||||
Background="#FF2AB2E7" | |||||
Content="启用随机数" | |||||
FontSize="14" | |||||
Foreground="#00c2f4" | |||||
IsChecked="{Binding IsSelected}" | |||||
/> | |||||
<Button | |||||
Grid.Column="3" | |||||
Margin="10,0,0,0" | |||||
Command="{Binding DataContext.EditCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}}" | |||||
CommandParameter="{Binding Text}" | |||||
Content="编辑" | |||||
FontSize="14" | |||||
/> | |||||
<Button | |||||
Grid.Column="4" | |||||
Margin="5,0,0,0" | |||||
Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}}" | |||||
CommandParameter="{Binding Text}" | |||||
Content="删除" | |||||
FontSize="14" | |||||
/> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</ItemsControl.ItemTemplate> | |||||
</ItemsControl> | |||||
</ScrollViewer> | |||||
<UniformGrid Grid.Row="1" Columns="2"> | |||||
<Button | |||||
Margin="10,10,10,0" | |||||
Grid.Column="1" | |||||
Command="{Binding SimOrderCommand}" | |||||
Content="模拟订单" Cursor="Hand" | |||||
/> | |||||
<Button | |||||
Margin="10,10,10,0" | |||||
Command="{Binding AddSimDataCommand}" | |||||
Content="新增模拟数据" | |||||
/> | |||||
</UniformGrid> | |||||
</StackPanel> | |||||
</Grid> | |||||
<Grid Grid.Column="1" Margin="20,0,0,0"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="40" /> | |||||
<RowDefinition Height="40" /> | |||||
<RowDefinition Height="40" /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<StackPanel Orientation="Horizontal"> | |||||
<!--#region 控制按钮--> | |||||
<Button | |||||
Margin="10,10,10,0" | |||||
Command="{Binding InitCommand}" | |||||
Content="初始化" Cursor="Hand" | |||||
/> | |||||
<Button | |||||
Margin="10,10,10,0" | |||||
Command="{Binding InitCommand}" | |||||
Content="停止" | |||||
/> | |||||
<Button | |||||
x:Name="button_loop" | |||||
Margin="10,10,10,0" | |||||
Command="{Binding LoopSimOrderCommand}" | |||||
Content="{Binding LoopOrderButtonContent}" | |||||
/> | |||||
<!--#endregion--> | |||||
</StackPanel> | |||||
<CheckBox | |||||
Grid.Row="2" | |||||
Height="20" | |||||
VerticalAlignment="Center" | |||||
Background="#FF2AB2E7" | |||||
Content="启用本地模拟程序" | |||||
FontSize="14" | |||||
Foreground="#00c2f4" | |||||
IsChecked="{Binding EnableLocalSimOrder}" | |||||
/> | |||||
</Grid> | |||||
</Grid> | |||||
</UserControl> |
@@ -1,4 +1,5 @@ | |||||
using System; | |||||
using BPASmartClient.MorkM.ViewModel; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
@@ -16,13 +17,14 @@ using System.Windows.Shapes; | |||||
namespace BPASmartClient.MorkM.View | namespace BPASmartClient.MorkM.View | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// Debug.xaml 的交互逻辑 | |||||
/// DebugView.xaml 的交互逻辑 | |||||
/// </summary> | /// </summary> | ||||
public partial class Debug : UserControl | |||||
public partial class DebugView : UserControl | |||||
{ | { | ||||
public Debug() | |||||
public DebugView() | |||||
{ | { | ||||
InitializeComponent(); | InitializeComponent(); | ||||
this.DataContext = new DebugViewModel(); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,206 @@ | |||||
<Window x:Class="BPASmartClient.MorkM.View.SimOrderConfitView" | |||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkM.View" | |||||
mc:Ignorable="d" | |||||
Title="SimOrderConfitView" Height="450" Width="800" | |||||
WindowStyle="None" | |||||
WindowStartupLocation="CenterScreen"> | |||||
<Window.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary> | |||||
<Style x:Key="buttonStyle" TargetType="Button"> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="Width" Value="100" /> | |||||
<Setter Property="FontSize" Value="18" /> | |||||
<Setter Property="Foreground" Value="Aqua" /> | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="Button"> | |||||
<Grid x:Name="gr"> | |||||
<ContentControl | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
Content="{TemplateBinding Content}" | |||||
Foreground="{TemplateBinding Foreground}" /> | |||||
<Polygon | |||||
x:Name="poly" | |||||
Points="0 0,80 0,100 30,20 30" | |||||
Stroke="#FF34F7F7" | |||||
StrokeThickness="2" /> | |||||
</Grid> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
<Setter TargetName="poly" Property="Fill" Value="#2234F7F7" /> | |||||
</Trigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</Window.Resources> | |||||
<Grid Background="#103153"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="79*"/> | |||||
<ColumnDefinition Width="321*"/> | |||||
</Grid.ColumnDefinitions> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="35" /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<!--#region 标题栏设置--> | |||||
<Border | |||||
x:Name="MoveBorder" | |||||
Height="35" | |||||
VerticalAlignment="Center" | |||||
Background="#0C2349" | |||||
BorderBrush="#55ffffff" | |||||
BorderThickness="0,0,0,1" Grid.ColumnSpan="2"> | |||||
<StackPanel Orientation="Horizontal"> | |||||
<Image Margin="15,5,0,5" Source="/BPASmartClient.CustomResource;component/Image/hbl.ico" /> | |||||
<TextBlock | |||||
Name="tbTitle" | |||||
Margin="10,0" | |||||
HorizontalAlignment="Left" | |||||
VerticalAlignment="Center" | |||||
FontSize="18" | |||||
Foreground="White" | |||||
Text="模拟设备参数配置" /> | |||||
</StackPanel> | |||||
</Border> | |||||
<UniformGrid | |||||
Width="150" | |||||
Height="30" | |||||
HorizontalAlignment="Left" | |||||
Columns="3" Grid.Column="1" Margin="492,2,0,3"> | |||||
<Button | |||||
Name="ButMin" | |||||
Content="" | |||||
Style="{StaticResource TitleBarStyle}" | |||||
Visibility="Hidden" /> | |||||
<Button | |||||
Name="ButMax" | |||||
Content="" | |||||
Style="{StaticResource TitleBarStyle}" | |||||
Visibility="Hidden" /> | |||||
<Button | |||||
Name="ButClose" | |||||
Content="" | |||||
FontSize="30" | |||||
Style="{StaticResource TitleBarStyle}" /> | |||||
</UniformGrid> | |||||
<!--#endregion--> | |||||
<!--#region 内容显示区--> | |||||
<Grid KeyDown="Grid_KeyDown" Grid.Row="1" Margin="10,10,10,10" Grid.ColumnSpan="2"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="260"/> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock | |||||
HorizontalAlignment="Right" | |||||
VerticalAlignment="Center" | |||||
FontFamily="楷体" | |||||
FontSize="18" | |||||
Foreground="#FF34F7F7" | |||||
Text="请输入模拟数据名称:" /> | |||||
<TextBox | |||||
Grid.Column="1" | |||||
Margin="0,10" | |||||
Width="400" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
BorderBrush="#FF23CACA" | |||||
CaretBrush="Aqua" | |||||
FontFamily="楷体" | |||||
FontSize="21" | |||||
Foreground="#ff34f7f7" | |||||
TabIndex="0" | |||||
Text="{Binding Name}" /> | |||||
<TextBlock | |||||
Grid.Row="1" | |||||
HorizontalAlignment="Right" | |||||
VerticalAlignment="Center" | |||||
FontFamily="楷体" | |||||
FontSize="20" | |||||
Foreground="#FF34F7F7" | |||||
Text="模拟位置最小值:" /> | |||||
<TextBox | |||||
Grid.Row="1" | |||||
Grid.Column="1" | |||||
Margin="0,10" | |||||
Width="400" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
BorderBrush="#FF23CACA" | |||||
CaretBrush="Aqua" | |||||
FontFamily="楷体" | |||||
FontSize="21" | |||||
Foreground="#ff34f7f7" | |||||
TabIndex="1" | |||||
Text="{Binding Min}" /> | |||||
<TextBlock | |||||
Grid.Row="2" | |||||
HorizontalAlignment="Right" | |||||
VerticalAlignment="Center" | |||||
FontFamily="楷体" | |||||
FontSize="20" | |||||
Foreground="#FF34F7F7" | |||||
Text="模拟位置最大值:" /> | |||||
<TextBox | |||||
Grid.Row="2" | |||||
Grid.Column="1" | |||||
Margin="0,10" | |||||
Width="400" | |||||
VerticalAlignment="Center" | |||||
Background="Transparent" | |||||
BorderBrush="#FF23CACA" | |||||
CaretBrush="Aqua" | |||||
FontFamily="楷体" | |||||
FontSize="21" | |||||
Foreground="#ff34f7f7" | |||||
TabIndex="2" | |||||
Text="{Binding Max}" /> | |||||
<Button | |||||
Grid.Row="3" | |||||
Margin="20,10" | |||||
Command="{Binding CancelCommand}" | |||||
VerticalAlignment="Center" | |||||
HorizontalAlignment="Right" | |||||
Content="取消" | |||||
Style="{StaticResource buttonStyle}" /> | |||||
<Button | |||||
Grid.Row="3" | |||||
Grid.Column="1" | |||||
Margin="20,10,120,10" | |||||
VerticalAlignment="Center" | |||||
HorizontalAlignment="Right" | |||||
Command="{Binding ConfirmCommand}" | |||||
Content="确认" | |||||
Style="{StaticResource buttonStyle}" /> | |||||
</Grid> | |||||
<!--#endregion--> | |||||
</Grid> | |||||
</Window> |
@@ -0,0 +1,56 @@ | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.MorkM.ViewModel; | |||||
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.Shapes; | |||||
namespace BPASmartClient.MorkM.View | |||||
{ | |||||
/// <summary> | |||||
/// SimOrderConfitView.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class SimOrderConfitView : Window | |||||
{ | |||||
public SimOrderConfitView() | |||||
{ | |||||
InitializeComponent(); | |||||
this.DataContext = new SimOrderConfitViewModel(); | |||||
this.MoveBorder.MouseLeftButtonDown += (o, e) => { this.DragMove(); }; | |||||
this.ButMin.Click += (o, e) => { this.WindowState = WindowState.Minimized; }; | |||||
this.ButMax.Click += (o, e) => { this.WindowState = this.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; }; | |||||
this.ButClose.Click += (o, e) => { this.Close(); ActionManage.GetInstance.CancelRegister("SendSimData"); }; | |||||
this.MaxWidth = SystemParameters.WorkArea.Width; | |||||
this.MaxHeight = SystemParameters.WorkArea.Height; | |||||
ActionManage.GetInstance.Register(new Action(() => | |||||
{ | |||||
this.Close(); | |||||
ActionManage.GetInstance.CancelRegister("SimOrderConfitViewModelExit"); | |||||
ActionManage.GetInstance.CancelRegister("SendSimData"); | |||||
}), "SimOrderConfitViewModelExit"); | |||||
} | |||||
private void Grid_KeyDown(object sender, KeyEventArgs e) | |||||
{ | |||||
var uie = e.OriginalSource as TextBox; | |||||
if (uie != null) | |||||
{ | |||||
if (e.Key == Key.Enter) | |||||
{ | |||||
uie.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); | |||||
e.Handled = true; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -1,21 +1,135 @@ | |||||
using System; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.Model; | |||||
using BPASmartClient.MorkM.Model; | |||||
using BPASmartClient.MorkM.View; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | |||||
using System.ComponentModel; | |||||
using System.Diagnostics; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Runtime.CompilerServices; | |||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using BPASmartClient.Helper; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
namespace BPASmartClient.MorkM.ViewModel | |||||
{ | { | ||||
public class DebugViewModel : ObservableObject | |||||
internal class DebugViewModel : ObservableObject | |||||
{ | { | ||||
public DebugViewModel() | public DebugViewModel() | ||||
{ | { | ||||
InitCommand = new RelayCommand(() => { ActionManage.GetInstance.Send("InitDevice"); }); | |||||
AddSimDataCommand = new RelayCommand(() => | |||||
{ | |||||
SimOrderConfitView simOrderConfitView = new SimOrderConfitView(); | |||||
simOrderConfitView.Show(); | |||||
}); | |||||
SimOrderCommand = new RelayCommand(() => | |||||
{ | |||||
List<ushort> locs = new List<ushort>(); | |||||
foreach (var item in simOrderConfig) | |||||
{ | |||||
if (item.IsSelected) | |||||
locs.Add((ushort)(new Random().Next(item.MinValue, item.MaxValue + 1))); | |||||
else | |||||
locs.Add(item.Loc); | |||||
} | |||||
if (locs.Count == 0) | |||||
{ | |||||
locs.Add((ushort)(new Random().Next(1, 5))); | |||||
locs.Add(10); | |||||
} | |||||
ActionManage.GetInstance.Send("SimOrder", locs); | |||||
//下发模拟订单 | |||||
Trace.WriteLine("下发模拟订单。。。"); | |||||
}); | |||||
InitCommand = new RelayCommand(() => | |||||
{ | |||||
ActionManage.GetInstance.Send("InitDevice"); | |||||
//初始化按钮 | |||||
Trace.WriteLine("已点击初始化按钮。。。"); | |||||
}); | |||||
LoopSimOrderCommand = new RelayCommand(() => | |||||
{ | |||||
if (LoopOrderButtonContent == "循环跑单") ActionManage.GetInstance.Send("EnableForOrder"); | |||||
if (LoopOrderButtonContent == "停止跑单") ActionManage.GetInstance.Send("StopForOrder"); | |||||
LoopOrderButtonContent = LoopOrderButtonContent == "循环跑单" ? "停止跑单" : "循环跑单"; | |||||
}); | |||||
EditCommand = new RelayCommand<object>((o) => | |||||
{ | |||||
if (o != null) | |||||
{ | |||||
var res = Json<KeepDataBase>.Data.simOrderConfig.FirstOrDefault(p => p.Text == o.ToString()); | |||||
if (res != null) | |||||
{ | |||||
SimOrderConfitView simOrderConfitView = new SimOrderConfitView(); | |||||
simOrderConfitView.Show(); | |||||
ActionManage.GetInstance.Send("SendSimData", res); | |||||
} | |||||
} | |||||
}); | |||||
RemoveCommand = new RelayCommand<object>((o) => | |||||
{ | |||||
if (o != null) | |||||
{ | |||||
var res = Json<KeepDataBase>.Data.simOrderConfig.FirstOrDefault(p => p.Text == o.ToString()); | |||||
if (res != null) Json<KeepDataBase>.Data.simOrderConfig.Remove(res); | |||||
} | |||||
}); | |||||
} | } | ||||
public static bool EnableLocalSimOrder { get { return GeneralConfig.EnableLocalSimOrder; } set { GeneralConfig.EnableLocalSimOrder = value; OnStaticPropertyChanged(); } } | |||||
public ObservableCollection<SimOrderVisibleData> simOrderConfig | |||||
{ | |||||
get | |||||
{ | |||||
return Json<KeepDataBase>.Data.simOrderConfig; | |||||
} | |||||
set | |||||
{ | |||||
Json<KeepDataBase>.Data.simOrderConfig = value; | |||||
} | |||||
} | |||||
public RelayCommand AddSimDataCommand { get; set; } | |||||
public RelayCommand SimOrderCommand { get; set; } | |||||
public RelayCommand InitCommand { get; set; } | public RelayCommand InitCommand { get; set; } | ||||
public RelayCommand LoopSimOrderCommand { get; set; } | |||||
public RelayCommand<object> EditCommand { get; set; } | |||||
public RelayCommand<object> RemoveCommand { get; set; } | |||||
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged; | |||||
public static void OnStaticPropertyChanged([CallerMemberName] string PropName = "") | |||||
{ | |||||
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(PropName)); | |||||
} | |||||
public static string LoopOrderButtonContent { get { return _mLoopOrderButtonContent; } set { _mLoopOrderButtonContent = value; OnStaticPropertyChanged(); } } | |||||
private static string _mLoopOrderButtonContent = "循环跑单"; | |||||
} | } | ||||
} | } | ||||
@@ -1,16 +1,16 @@ | |||||
using System; | |||||
using BPASmartClient.Business; | |||||
using BPASmartClient.Device; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using BPASmartClient.Business; | |||||
using BPASmartClient.Device; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using System.Collections.ObjectModel; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
namespace BPASmartClient.MorkM.ViewModel | |||||
{ | { | ||||
public class MonitorViewModel : ObservableObject | |||||
internal class MonitorViewModel : ObservableObject | |||||
{ | { | ||||
public MonitorViewModel() | public MonitorViewModel() | ||||
{ | { | ||||
@@ -20,6 +20,5 @@ namespace BPASmartClient.MorkS.ViewModel | |||||
public static int DeviceId { get; set; } | public static int DeviceId { get; set; } | ||||
public ObservableCollection<VariableMonitor> variableMonitors { get; set; } = Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.FirstOrDefault(p => p.DeviceId == DeviceId)?.variableMonitors; | public ObservableCollection<VariableMonitor> variableMonitors { get; set; } = Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.FirstOrDefault(p => p.DeviceId == DeviceId)?.variableMonitors; | ||||
} | } | ||||
} | } |
@@ -1,17 +1,16 @@ | |||||
using System; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.MorkM.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.Model; | |||||
using BPASmartClient.MorkS.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
namespace BPASmartClient.MorkS.ViewModel | |||||
namespace BPASmartClient.MorkM.ViewModel | |||||
{ | { | ||||
public class ParSetViewModel : ObservableObject | |||||
internal class ParSetViewModel: ObservableObject | |||||
{ | { | ||||
public ParSetViewModel() | public ParSetViewModel() | ||||
{ | { | ||||
@@ -0,0 +1,90 @@ | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.Model; | |||||
using BPASmartClient.MorkM.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkM.ViewModel | |||||
{ | |||||
internal class SimOrderConfitViewModel: ObservableObject | |||||
{ | |||||
bool IsEdit = false; | |||||
SimOrderVisibleData simOrderVisibleData; | |||||
string DeviceType = string.Empty; | |||||
public SimOrderConfitViewModel() | |||||
{ | |||||
// DeviceType = GeneralConfig.StartDevice; | |||||
ActionManage.GetInstance.Register(new Action<object>((o) => | |||||
{ | |||||
if (o != null) | |||||
{ | |||||
if (o is SimOrderVisibleData sim) | |||||
{ | |||||
Name = sim.Text; | |||||
Max = sim.MaxValue; | |||||
Min = sim.MinValue; | |||||
IsEdit = true; | |||||
simOrderVisibleData = sim; | |||||
} | |||||
} | |||||
}), "SendSimData"); | |||||
ConfirmCommand = new RelayCommand(() => | |||||
{ | |||||
//if (!Json<KeepDataBase>.Data.simOrderConfig.ContainsKey(DeviceType)) | |||||
//{ | |||||
// Json<KeepDataBase>.Data.simOrderConfig.TryAdd(DeviceType, new ObservableCollection<SimOrderVisibleData>()); | |||||
//} | |||||
if (!IsEdit) | |||||
{ | |||||
Json<KeepDataBase>.Data.simOrderConfig.Add(new SimOrderVisibleData() | |||||
{ | |||||
IsEnable = true, | |||||
IsSelected = true, | |||||
Text = Name, | |||||
Loc = Min, | |||||
MaxValue = Max, | |||||
MinValue = Min, | |||||
}); | |||||
} | |||||
else | |||||
{ | |||||
int index = Array.FindIndex(Json<KeepDataBase>.Data.simOrderConfig.ToArray(), p => p.Text == simOrderVisibleData.Text); | |||||
if (index >= 0 && index < Json<KeepDataBase>.Data.simOrderConfig.Count()) | |||||
{ | |||||
Json<KeepDataBase>.Data.simOrderConfig.ElementAt(index).Text = Name; | |||||
Json<KeepDataBase>.Data.simOrderConfig.ElementAt(index).MinValue = Min; | |||||
Json<KeepDataBase>.Data.simOrderConfig.ElementAt(index).MaxValue = Max; | |||||
Json<KeepDataBase>.Data.simOrderConfig.ElementAt(index).IsEnable = simOrderVisibleData.IsEnable; | |||||
Json<KeepDataBase>.Data.simOrderConfig.ElementAt(index).IsSelected = simOrderVisibleData.IsSelected; | |||||
} | |||||
} | |||||
ActionManage.GetInstance.Send("SimOrderConfitViewModelExit"); | |||||
}); | |||||
CancelCommand = new RelayCommand(() => { ActionManage.GetInstance.Send("SimOrderConfitViewModelExit"); }); | |||||
} | |||||
public RelayCommand ConfirmCommand { get; set; } | |||||
public RelayCommand CancelCommand { get; set; } | |||||
public string Name { get { return _mName; } set { _mName = value; OnPropertyChanged();; } } | |||||
private string _mName; | |||||
public ushort Min { get { return _mMin; } set { _mMin = value; OnPropertyChanged(); } } | |||||
private ushort _mMin; | |||||
public ushort Max { get { return _mMax; } set { _mMax = value; OnPropertyChanged(); } } | |||||
private ushort _mMax; | |||||
} | |||||
} | |||||
@@ -7,14 +7,14 @@ | |||||
<add key="IsEnableTest" value="false"/> | <add key="IsEnableTest" value="false"/> | ||||
<!--开发环境--> | <!--开发环境--> | ||||
<!--<add key="apollouri" value="http://10.2.1.21:28080/"/> | |||||
<add key="apollouri" value="http://10.2.1.21:28080/"/> | |||||
<add key="AppId" value="dev1_common"/> | <add key="AppId" value="dev1_common"/> | ||||
<add key ="Namespaces" value="DEV.Config"/>--> | |||||
<add key ="Namespaces" value="DEV.Config"/> | |||||
<!--正式环境--> | <!--正式环境--> | ||||
<add key="apollouri" value="http://47.108.65.220:28080/"/> | |||||
<!--<add key="apollouri" value="http://47.108.65.220:28080/"/> | |||||
<add key="AppId" value="order"/> | <add key="AppId" value="order"/> | ||||
<add key ="Namespaces" value="TEST1.Config"/> | |||||
<add key ="Namespaces" value="TEST1.Config"/>--> | |||||
<!--阿里云上报启动方式:API 或者 LOCAL--> | <!--阿里云上报启动方式:API 或者 LOCAL--> | ||||
<!--API :通过客户端ID,调用接口查询“设备连接信息”--> | <!--API :通过客户端ID,调用接口查询“设备连接信息”--> | ||||
@@ -31,6 +31,7 @@ | |||||
<ProjectReference Include="..\BPASmartClient.Lebai\BPASmartClient.Lebai.csproj" /> | <ProjectReference Include="..\BPASmartClient.Lebai\BPASmartClient.Lebai.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.MorkD\BPASmartClient.MorkD.csproj" /> | <ProjectReference Include="..\BPASmartClient.MorkD\BPASmartClient.MorkD.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.MorkF\BPASmartClient.MorkF.csproj" /> | <ProjectReference Include="..\BPASmartClient.MorkF\BPASmartClient.MorkF.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.MorkM\BPASmartClient.MorkM.csproj" /> | |||||
<ProjectReference Include="..\BPASmartClient.MorkS\BPASmartClient.MorkS.csproj" /> | <ProjectReference Include="..\BPASmartClient.MorkS\BPASmartClient.MorkS.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.MorkT\BPASmartClient.MorkT.csproj" /> | <ProjectReference Include="..\BPASmartClient.MorkT\BPASmartClient.MorkT.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.SCChip\BPASmartClient.SCChip.csproj" /> | <ProjectReference Include="..\BPASmartClient.SCChip\BPASmartClient.SCChip.csproj" /> | ||||
@@ -61,7 +61,7 @@ | |||||
</Device>-->--> | </Device>-->--> | ||||
<Device Name="MorkF" Module="BPASmartClient.MorkF.Control_MorkF" DeviceId="2"> | |||||
<!--<Device Name="MorkF" Module="BPASmartClient.MorkF.Control_MorkF" DeviceId="2"> | |||||
<Peripherals> | <Peripherals> | ||||
<Peripheral Module="BPASmartClient.PLC.PLCMachine"> | <Peripheral Module="BPASmartClient.PLC.PLCMachine"> | ||||
<Parameters> | <Parameters> | ||||
@@ -71,16 +71,28 @@ | |||||
</Parameters> | </Parameters> | ||||
</Peripheral> | </Peripheral> | ||||
</Peripherals> | </Peripherals> | ||||
</Device> | |||||
</Device>--> | |||||
<Device Name="Morks" Module="BPASmartClient.MorkS.Control_Morks" DeviceId="100"> | |||||
<!--<Device Name="Morks" Module="BPASmartClient.MorkS.Control_Morks" DeviceId="100"> | |||||
<Peripherals> | |||||
<Peripheral Module="BPASmartClient.PLC.PLCMachine"> | |||||
<Parameters> | |||||
<IpAddress>127.0.0.1</IpAddress> | |||||
<Port>502</Port> | |||||
<PLCReadAddress>M,M230.0,24;M,M0.3,3;M,M100.0,16;M,M235.0,1;M,M102.0,7;M,M103.0,6;VW,VW372,1</PLCReadAddress> | |||||
--><!--<PLCReadAddress>M,M230.0,24</PLCReadAddress>--><!-- | |||||
</Parameters> | |||||
</Peripheral> | |||||
</Peripherals> | |||||
</Device>-->-->--> | |||||
<Device Name="MorkM" Module="BPASmartClient.MorkM.Control_MorkM" DeviceId="100"> | |||||
<Peripherals> | <Peripherals> | ||||
<Peripheral Module="BPASmartClient.PLC.PLCMachine"> | <Peripheral Module="BPASmartClient.PLC.PLCMachine"> | ||||
<Parameters> | <Parameters> | ||||
<IpAddress>127.0.0.1</IpAddress> | <IpAddress>127.0.0.1</IpAddress> | ||||
<Port>502</Port> | <Port>502</Port> | ||||
<PLCReadAddress>M,M230.0,24;M,M0.3,3;M,M100.0,16;M,M235.0,1;M,M102.0,7;M,M103.0,6;VW,VW372,1</PLCReadAddress> | <PLCReadAddress>M,M230.0,24;M,M0.3,3;M,M100.0,16;M,M235.0,1;M,M102.0,7;M,M103.0,6;VW,VW372,1</PLCReadAddress> | ||||
<!--<PLCReadAddress>M,M230.0,24</PLCReadAddress>--> | |||||
<PLCReadAddress>M,M230.0,24</PLCReadAddress> | |||||
</Parameters> | </Parameters> | ||||
</Peripheral> | </Peripheral> | ||||
</Peripherals> | </Peripherals> | ||||
@@ -251,7 +251,9 @@ namespace BPASmartClient | |||||
{ | { | ||||
if (sender is MenuItem) | if (sender is MenuItem) | ||||
{ | { | ||||
Type type = Assembly.Load("BPASmartClient.MorkT").GetType("BPASmartClient.MorkT.View.DebugView"); | |||||
// Type type = Assembly.Load("BPASmartClient.MorkT").GetType("BPASmartClient.MorkT.View.DebugView"); | |||||
// Type type = Assembly.Load("BPASmartClient.MorkF").GetType("BPASmartClient.MorkF.View.DebugView"); | |||||
Type type = Assembly.Load("BPASmartClient.MorkM").GetType("BPASmartClient.MorkM.View.DebugView"); | |||||
ConstructorInfo cti = type.GetConstructor(System.Type.EmptyTypes); | ConstructorInfo cti = type.GetConstructor(System.Type.EmptyTypes); | ||||
contentRegion.Content = (FrameworkElement)cti.Invoke(null); | contentRegion.Content = (FrameworkElement)cti.Invoke(null); | ||||
Title.Text = (sender as MenuItem).Header?.ToString() + "界面"; | Title.Text = (sender as MenuItem).Header?.ToString() + "界面"; | ||||