Просмотр исходного кода

增mork T新的调试界面

样式分支
pengliangyang 2 лет назад
Родитель
Сommit
88511b8559
7 измененных файлов: 801 добавлений и 155 удалений
  1. +30
    -104
      BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs
  2. +4
    -0
      BPASmartClient.Morkt.JAKA.JC/BPASmartClient.MorkTJAKAJC.csproj
  3. +4
    -51
      BPASmartClient.Morkt.JAKA.JC/Control_MORKJC.cs
  4. +397
    -0
      BPASmartClient.Morkt.JAKA.JC/View/DebugView.xaml
  5. +35
    -0
      BPASmartClient.Morkt.JAKA.JC/View/DebugView.xaml.cs
  6. +237
    -0
      BPASmartClient.Morkt.JAKA.JC/ViewModel/DebugViewModel.cs
  7. +94
    -0
      BPASmartClient.Morkt.JAKA.JC/ViewModel/MonitorViewModel.cs

+ 30
- 104
BPASmartClient.MorkT.Lebai.JC/Control_MORKJC2.cs Просмотреть файл

@@ -32,17 +32,10 @@ namespace BPASmartClient.MorkTLebaiJC
*/
public class Control_MORKJC2 : BaseDevice
{
//private CoffeEndCook coffeEndCook = new CoffeEndCook();//模拟咖啡制作成功
//咖啡机主控程序
//private CoffeeMachine coffeeMachine;
//物料存放位置
private Dictionary<string, PolymerBatching> batchings = new Dictionary<string, PolymerBatching>();
//容器位置
private string holderLoc;
/// <summary>
/// 获取乐百机器人的数据
/// </summary>
//SignalResult lebai = new SignalResult();
//主料位置
private string mainMaterialLoc;
//子订单ID
@@ -64,49 +57,9 @@ namespace BPASmartClient.MorkTLebaiJC
ConcurrentQueue<MorkOrderPush> morkOrderPushes = new ConcurrentQueue<MorkOrderPush>();
public void Init()
{
//ActionManage.GetInstance.Register(new Action<object>((s) =>
//{
// if (s is DrCoffeeDrinksCode cf)
// {
// DoCoffee();
// }
// else if (s is Dictionary<string, string> ms)
// {
// if (ms.ContainsKey("Button"))
// {
// switch (ms["Button"])
// {
// case "启动示教":
// JuicerModel.GetInstance.StartTeachMode();
// break;
// case "停止示教":
// JuicerModel.GetInstance.EndtTeachMode();
// break;
// case "启动机器人":
// JuicerModel.GetInstance.StartRobot();
// break;
// case "急停":
// JuicerModel.GetInstance.EStopRobot();
// break;
// default:
// break;
// }
// }
// }
//}), "SimCoffee");

//构建所有商品物料信息
batchings = PolymerBatching.BuildAll();

EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeEndCookEvent>(DeviceId, CoffeEndCookHandle);

System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
//一系列外围基础配置
var com_Coffee = config.AppSettings.Settings["COM_Coffee"].Value;
var baud_Coffee = config.AppSettings.Settings["BAUD_Coffee"].Value;
//咖啡机创建
//coffeeMachine = new CoffeeMachine(com_Coffee, (BaudRates)Enum.Parse(typeof(BaudRates), baud_Coffee));

EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeEndCookEvent>(DeviceId, DRCoffee_CoffeEndCookEventHandle);
Main();
ReadData();
ThreadManage.GetInstance().StartLong(new Action(() =>
@@ -116,7 +69,7 @@ namespace BPASmartClient.MorkTLebaiJC
working = true;
if (morkOrderPushes.TryDequeue(out MorkOrderPush order))
{
MessageLog.GetInstance.Show($"开始制作订单[{order.SortNum}]");
DeviceProcessLogShow($"开始制作订单[{order.SortNum}]");
//商品类型
GOODS_TYPE currentGoodsType = GOODS_TYPE.NEITHER;
//子订单ID
@@ -134,7 +87,6 @@ namespace BPASmartClient.MorkTLebaiJC
holderLoc = res.BatchingLoc;
break;
case BATCHING_CLASS.MAIN_MATERIAL:
// mainMaterialLoc ="1";
mainMaterialLoc = res.BatchingLoc;
//验证商品是咖啡还是冰淇淋
if (ValidateGoodsByBatching(res.BatchingLoc) != GOODS_TYPE.NEITHER)
@@ -164,7 +116,7 @@ namespace BPASmartClient.MorkTLebaiJC
DoWater();
break;
case GOODS_TYPE.NEITHER:
MessageLog.GetInstance.Show("未知的商品类型");
DeviceProcessLogShow("未知的商品类型");
break;
}
}
@@ -177,27 +129,12 @@ namespace BPASmartClient.MorkTLebaiJC

public void Main()
{
//咖啡机开启主线程
//coffeeMachine.Start();
//开始心跳刷新,根据咖啡机及冰淇淋机来判断
ThreadManage.GetInstance().StartLong(new Action(() =>
{
//GeneralConfig.Healthy =
// JuicerModel.GetInstance.IsConnected &&
// MorkCStatus.GetInstance().CanDo &&
// JuicerHelper.GetInstance.IsOpen &&
// MCUSerialHelper.GetInstance.IsOpen;
//GeneralConfig.Healthy = true;
IsHealth = GetStatus<bool>("JuicerIsConnected");
Thread.Sleep(100);
}), "MORK-IC心跳刷新");
//ThreadManage.GetInstance.Start(new Action(() =>
//{
// while (!JuicerModel.GetInstance.IsConnected)
// {
// Thread.Sleep(10);
// }
// //Sence(JuicerModel.SENCE_欢迎);
//}), "MORK-JC欢迎");
}

private void OrderChange(string subid, ORDER_STATUS oRDER_STATUS)
@@ -267,13 +204,12 @@ namespace BPASmartClient.MorkTLebaiJC
/// </summary>
private void DoCoffee()
{

#region 接咖啡流程
are.Reset();
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -281,7 +217,7 @@ namespace BPASmartClient.MorkTLebaiJC
int resultTakeCup = takeCup();
if (resultTakeCup == 1)
{
MessageLog.GetInstance.Show("咖啡杯取杯完成");
DeviceProcessLogShow("咖啡杯取杯完成");
new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_接咖啡);
Wait();
@@ -293,14 +229,14 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -308,8 +244,7 @@ namespace BPASmartClient.MorkTLebaiJC
Sence(JuicerModel.JUICE2_放咖啡杯);
Wait();
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
MessageLog.GetInstance.Show("咖啡制作完成");

DeviceProcessLogShow("咖啡制作完成");
}
else
{
@@ -326,7 +261,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -334,7 +269,7 @@ namespace BPASmartClient.MorkTLebaiJC
int resultTakeCup = takeCup();
if (resultTakeCup == 1)
{
MessageLog.GetInstance.Show("取茶杯完成");
DeviceProcessLogShow("取茶杯完成");
new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_接茶叶);
Wait();
@@ -368,7 +303,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -378,7 +313,7 @@ namespace BPASmartClient.MorkTLebaiJC


OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
MessageLog.GetInstance.Show("茶水制作完成");
DeviceProcessLogShow("茶水制作完成");

}
else
@@ -397,7 +332,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -425,7 +360,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -434,7 +369,7 @@ namespace BPASmartClient.MorkTLebaiJC
Sence(JuicerModel.JUICE2_放水杯);
Wait();
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
MessageLog.GetInstance.Show("纯净水制作完成");
DeviceProcessLogShow("纯净水制作完成");

}
else
@@ -457,7 +392,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COOKING);
@@ -575,7 +510,7 @@ namespace BPASmartClient.MorkTLebaiJC
while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
{
if (!outCupCheck)
MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
outCupCheck = true;
}
outCupCheck = false;
@@ -584,7 +519,7 @@ namespace BPASmartClient.MorkTLebaiJC
Wait();

OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
MessageLog.GetInstance.Show("果汁制作完成");
DeviceProcessLogShow("果汁制作完成");

}
////模拟果汁
@@ -592,7 +527,7 @@ namespace BPASmartClient.MorkTLebaiJC
//while (GetStatus<bool>("RobotValue1"))//判断放杯位置是否有物品
//{
// if (!outCupCheck)
// MessageLog.GetInstance.ShowEx("成品处有纸杯存在,请取走!!");
// DeviceProcessLogShow("成品处有纸杯存在,请取走!!");
// outCupCheck = true;
//}
//outCupCheck = false;
@@ -601,7 +536,7 @@ namespace BPASmartClient.MorkTLebaiJC
//Wait();

//OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
//MessageLog.GetInstance.Show("果汁制作完成");
//DeviceProcessLogShow("果汁制作完成");
}
else
{
@@ -625,22 +560,16 @@ namespace BPASmartClient.MorkTLebaiJC
{
try
{

nCnt = 0;
new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_初始位);
Wait();


new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_取纸杯);
Wait();


new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_纸杯检测);
Wait();

nCnt++;
Thread.Sleep(2000);
while (checkCnt < 3)
@@ -663,7 +592,7 @@ namespace BPASmartClient.MorkTLebaiJC
if (nCnt > 3)
{
nCnt = 0;
MessageLog.GetInstance.ShowEx("三次取杯失败,回原点");
DeviceProcessLogShow("三次取杯失败,回原点");
new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_检测位回原点);
Wait();
@@ -671,8 +600,6 @@ namespace BPASmartClient.MorkTLebaiJC
}
else
{


nCnt++;
new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }.Publish();
Sence(JuicerModel.JUICE2_二次取杯);
@@ -694,20 +621,17 @@ namespace BPASmartClient.MorkTLebaiJC
{
checkCnt = 0;
return 1;

}
checkCnt++;
}

}
Thread.Sleep(1000);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.Show(ex.ToString());
DeviceProcessLogShow(ex.ToString());
}

return 1;
}
/// <summary>
@@ -736,7 +660,7 @@ namespace BPASmartClient.MorkTLebaiJC
}
catch (Exception ex)
{
MessageLog.GetInstance.Show(ex.ToString());
DeviceProcessLogShow(ex.ToString());
return 0;
}
}
@@ -754,12 +678,12 @@ namespace BPASmartClient.MorkTLebaiJC
Thread.Sleep(100);
if (DateTime.Now.Subtract(delayTimeOut).TotalSeconds >= 1) return 2;
}
MessageLog.GetInstance.Show("放杯位有杯子未取走,等待取走,最多等待60s,即跳出流程");
DeviceProcessLogShow("放杯位有杯子未取走,等待取走,最多等待60s,即跳出流程");
return 1;
}
catch (Exception ex)
{
MessageLog.GetInstance.Show(ex.ToString());
DeviceProcessLogShow(ex.ToString());
return 0;
}
}
@@ -823,7 +747,10 @@ namespace BPASmartClient.MorkTLebaiJC
// }
// }
//}

private void DRCoffee_CoffeEndCookEventHandle(IEvent @event, EventCallBackHandle callBack)
{
are.Set();
}
public override void DoMain()
{
}
@@ -844,7 +771,6 @@ namespace BPASmartClient.MorkTLebaiJC
public override void ResetProgram()
{
}

public override void SimOrder()
{
}


+ 4
- 0
BPASmartClient.Morkt.JAKA.JC/BPASmartClient.MorkTJAKAJC.csproj Просмотреть файл

@@ -7,9 +7,13 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" />
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" />
<ProjectReference Include="..\BPASmartClient.DRCoffee\BPASmartClient.DRCoffee.csproj" />
<ProjectReference Include="..\BPASmartClient.GSIceCream\BPASmartClient.GSIceCream.csproj" />
<ProjectReference Include="..\BPASmartClient.JAKA\BPASmartClient.JAKA.csproj" />
<ProjectReference Include="..\BPASmartClient.Juicer\BPASmartClient.Juicer.csproj" />
<ProjectReference Include="..\BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj" />
<ProjectReference Include="..\BPASmartClient.MCU\BPASmartClient.MCU.csproj" />
</ItemGroup>



+ 4
- 51
BPASmartClient.Morkt.JAKA.JC/Control_MORKJC.cs Просмотреть файл

@@ -16,28 +16,13 @@ using BPASmartClient.EventBus;
using static BPASmartClient.EventBus.EventBus;
using BPASmartClient.Model.PLC;
using BPASmartClient.Model.单片机;
using BPASmartClient.Message;

namespace BPASmartClient.MorktJAKAJC
{
/*
* 冰淇淋咖啡机组合套装
* 物料位置:
* 1:冰淇料
* 2:冰淇淋杯
* 5:咖啡
* 6:咖啡杯
* 9: 茶
* 10: 茶杯
*/
public class Control_MORKJC : BaseDevice
{
GVL_MORKJC mORKD = new GVL_MORKJC();
//咖啡机主控程序
//private CoffeeMachine coffeeMachine;
////果汁机主控程序
//private JuicerMachine juicerMachine;
////单片机主控程序
//private ICChipMachine icchipMachine;
//物料存放位置
private Dictionary<string, PolymerBatching> batchings = new Dictionary<string, PolymerBatching>();
//容器位置
@@ -80,13 +65,6 @@ namespace BPASmartClient.MorktJAKAJC
//构建所有商品物料信息
batchings = PolymerBatching.BuildAll();
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeEndCookEvent>(DeviceId, DRCoffee_CoffeEndCookEventHandle);

System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
//一系列外围基础配置
var com_Coffee = config.AppSettings.Settings["COM_Coffee"].Value;
var baud_Coffee = config.AppSettings.Settings["BAUD_Coffee"].Value;
//咖啡机创建
//coffeeMachine = new CoffeeMachine(com_Coffee, (BaudRates)Enum.Parse(typeof(BaudRates), baud_Coffee));
Main();
ReadData();
ThreadManage.GetInstance().StartLong(new Action(() =>
@@ -99,9 +77,6 @@ namespace BPASmartClient.MorktJAKAJC
if (morkOrderPushes.TryDequeue(out MorkOrderPush order))
{
DeviceProcessLogShow($"开始制作订单[{order.SortNum}]");



//商品类型
GOODS_TYPE currentGoodsType = GOODS_TYPE.NEITHER;
//子订单ID
@@ -131,7 +106,6 @@ namespace BPASmartClient.MorktJAKAJC
}
}
}

//根据商品类型执行具体制作流程
switch (currentGoodsType)
{
@@ -162,8 +136,6 @@ namespace BPASmartClient.MorktJAKAJC

public void Main()
{
//咖啡机开启主线程
//coffeeMachine.Start();
//开始心跳刷新,根据咖啡机及冰淇淋机来判断
ThreadManage.GetInstance().StartLong(new Action(() =>
{
@@ -175,14 +147,6 @@ namespace BPASmartClient.MorktJAKAJC
//GeneralConfig.Healthy = true;
Thread.Sleep(100);
}), "MORK-IC心跳刷新");
//ThreadManage.GetInstance().Start(new Action(() =>
//{
// while (!Write.IsConnected)
// {
// Thread.Sleep(10);
// }
// //LebaiHelper.GetInstance.Scene(LebaiHelper.SENCE_欢迎);
//}), "MORK-JC欢迎");
}

public void DataParse<T>(T order)
@@ -242,14 +206,12 @@ namespace BPASmartClient.MorktJAKAJC
{
#region 接咖啡流程
are.Reset();
// OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COOKING);
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COOKING);
int resultTakeCup = takeCup();
if (resultTakeCup == 1)
{
DeviceProcessLogShow("咖啡杯取杯完成");
new WriteJaka() { TagName = "JaKaProgramName", Value = JakaModel.SENCE_接咖啡 }.Publish();
// Write("JaKaProgramName",JakaModel.SENCE_接咖啡);
Wait(int.Parse(JakaModel.SENCE_接咖啡));
new DRCoffee_MakeCoffeeEvent() { DeviceId = DeviceId, DrinkCode = (DrCoffeeDrinksCode)int.Parse(mainMaterialLoc) }.Publish(); //接咖啡控制 //DrCoffeeDrinksCode.热水
are.WaitOne(1000 * 180);
@@ -351,7 +313,6 @@ namespace BPASmartClient.MorktJAKAJC
int resultTakeCup = takeCup();
if (resultTakeCup == 1)
{

new WriteJaka() { TagName = "JaKaProgramName", Value = JakaModel.SENCE_接水 }.Publish();
Wait(int.Parse(JakaModel.SENCE_接水));

@@ -616,13 +577,6 @@ namespace BPASmartClient.MorktJAKAJC
new WriteJaka() { TagName = "JaKaProgramName", Value = JakaModel.SENCE_取杯检测 }.Publish();
Wait(int.Parse(JakaModel.SENCE_取杯检测));
bSensorInput = sensor_Sign(1);
/*delayTimeOut = DateTime.Now;
bSensorInput = sensor_Sign(1);
while (bSensorInput == 3)
{
Thread.Sleep(100);
bSensorInput = sensor_Sign(1);
}*/
while (getCup_cnt < 4 && (bSensorInput == 2 || bSensorInput == 3))
{
DeviceProcessLogShow($"第{getCup_cnt}次取杯失败");
@@ -654,7 +608,7 @@ namespace BPASmartClient.MorktJAKAJC
}
catch (Exception ex)
{
DeviceProcessLogShow(ex.ToString());
MessageLog.GetInstance.ShowEx(ex.ToString());
return 0;
}
}
@@ -697,7 +651,7 @@ namespace BPASmartClient.MorktJAKAJC
}
catch (Exception ex)
{
DeviceProcessLogShow(ex.ToString());
MessageLog.GetInstance.ShowEx(ex.ToString());
return 0;
}
}
@@ -713,7 +667,6 @@ namespace BPASmartClient.MorktJAKAJC
{
try
{
//cnt_Check = 0;
bSensorInput = sensor_Sign(2);
if (bSensorInput == 2)
{
@@ -729,7 +682,7 @@ namespace BPASmartClient.MorktJAKAJC
}
catch (Exception ex)
{
DeviceProcessLogShow(ex.ToString());
MessageLog.GetInstance.ShowEx(ex.ToString());
return 0;
}
}


+ 397
- 0
BPASmartClient.Morkt.JAKA.JC/View/DebugView.xaml Просмотреть файл

@@ -0,0 +1,397 @@
<UserControl x:Class="BPASmartClient.MorkTJAKAJC.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:vm="clr-namespace:BPASmartClient.MorkTJAKAJC.ViewModel"
mc:Ignorable="d"
Name="调试界面"
d:DesignHeight="500" d:DesignWidth="1000" Unloaded="Dubug_Unloaded">
<UserControl.DataContext>
<vm:DebugViewModel/>
</UserControl.DataContext>
<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="10*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="20*"/>
</Grid.RowDefinitions>

<GroupBox Grid.ColumnSpan="2"
FontFamily="楷体"
FontSize="20"
Header=" 乐白机器人 ">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding RobotConnected}"
Margin="40,0"/>
<TextBlock Text="机器人模式:"/>
<TextBlock Text="{Binding RobotMode}"
Margin="40,0"/>
</StackPanel>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding RobotConnected}"
Margin="120,0,0,0"/>
<ListBox Grid.Row="2" Background="Transparent" Margin="0,0,0,-9">
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<WrapPanel Orientation="Horizontal" IsItemsHost="True" ScrollViewer.CanContentScroll="True"/>
</ScrollViewer>
</ControlTemplate>
</ListBox.Template>
<Button Content="机器人启动"
Margin="20,5" Width="80" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人启动">
</Button>
<Button Content="启动示教"
Margin="20,5" Width="80" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="启动示教"/>
<Button Content="停止示教"
Margin="20,5" Width="80" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="停止示教"/>
<Button Content="机器人急停"
Margin="20,5" Width="80" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人急停"/>
<Button Content="暂停"
Margin="10,5" Width="40" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人急停"/>
<Button Content="恢复"
Margin="10,5" Width="40" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人急停"/>
</ListBox>
<Grid Margin="629,-24,19,0" Grid.RowSpan="3">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<TextBlock>DI</TextBlock>
<CheckBox Margin="50,0,0,0" IsEnabled="false" Name="Robot_DI0">DI0</CheckBox>
<CheckBox Margin="120,0,0,0" IsEnabled="false" Name="Robot_DI1">DI1</CheckBox>
<CheckBox Margin="190,0,0,0" IsEnabled="false" Name="Robot_DI2">DI2</CheckBox>
<CheckBox Margin="260,0,0,0" IsEnabled="false" Name="Robot_DI3">DI3</CheckBox>
</Grid>
<Grid Grid.Row="1">
<TextBlock Width="50">DO</TextBlock>
<ComboBox Width="70" Margin="50,12,268,10">
<ComboBoxItem IsSelected="true">DO0</ComboBoxItem>
<ComboBoxItem>DO1</ComboBoxItem>
<ComboBoxItem>DO2</ComboBoxItem>
<ComboBoxItem>DO3</ComboBoxItem>
</ComboBox>
<ComboBox Margin="142,12,108,10" Width="70">
<ComboBoxItem IsSelected="true">true</ComboBoxItem>
<ComboBoxItem>false</ComboBoxItem>
</ComboBox>
<Button Width="50" Margin="260,12,10,10">输出</Button>
</Grid>
</Grid>
</Grid>
</GroupBox>
<GroupBox Grid.Row="2"
FontFamily="楷体"
FontSize="20"
Header=" 果汁机 ">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding IceCreamConnected}"
Margin="120,0,0,0"/>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="设备状态" />
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Name="Heating" HorizontalAlignment="Center">制热</TextBlock>
<TextBlock Grid.Column="1" Name="cooling" HorizontalAlignment="Center">制冷</TextBlock>
<TextBlock Grid.Column="2" Name="LackOfWater" HorizontalAlignment="Center">缺水</TextBlock>
<TextBlock Grid.Column="3" Name="ChildLocks" HorizontalAlignment="Center">童锁</TextBlock>
<TextBlock Grid.Column="4" Name="Use" HorizontalAlignment="Center">使用</TextBlock>
</Grid>

</Grid>


<StackPanel Grid.Row="2" Orientation="Vertical">
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>果汁</TextBlock>
<ComboBox Margin="100,0,0,0"
Width="100" >
<ComboBoxItem IsSelected="true">饮品1</ComboBoxItem>
<ComboBoxItem>饮品2</ComboBoxItem>
<ComboBoxItem>饮品3</ComboBoxItem>
<ComboBoxItem>饮品4</ComboBoxItem>
</ComboBox>
<ComboBox Margin="20,0,0,0" Width="100">
<ComboBoxItem IsSelected="true">冷饮</ComboBoxItem>
<ComboBoxItem>热饮</ComboBoxItem>
</ComboBox>
<Button Command="{Binding Button_MakeIceCreamCommand}"
Margin="20,0"
Content="制作" />
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">

</StackPanel>
</StackPanel>
</Grid>
</GroupBox>
<GroupBox Grid.Row="2" Grid.Column="1"
FontFamily="楷体"
FontSize="20"
Header=" 咖啡机">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding CoffeeConnected}"
Margin="120,0,0,0"/>
<Grid Grid.Row="1">
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="99" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="171" />
</Grid.ColumnDefinitions>
<TextBlock Height="23" Width="100" FontSize="18" HorizontalAlignment="Center">咖啡机状态</TextBlock>
<TextBlock FontSize="18"
Grid.Column="1"
Text="{Binding CoffeeStatus}" Height="23" />
<TextBlock Grid.Column="2" Height="23" Width="80" FontSize="18">应用状态</TextBlock>
<TextBlock FontSize="18"
Grid.Column="3"
Text="{Binding AppStatus}" Height="23"/>
<TextBlock Grid.Row="1" Grid.Column="0" Height="22" Width="80" FontSize="18">告警信息</TextBlock>
<TextBlock FontSize="15"
Grid.Row="1"
Grid.Column="1"
Text="{Binding Warning}" />
<TextBlock Grid.Row="1" Grid.Column="2" Height="22" Width="80" FontSize="18">故障信息</TextBlock>
<TextBlock FontSize="18"
Grid.Row="1"
Grid.Column="3"
Text="{Binding CaffeeFault}" Height="22" Width="60" />
</Grid>
<StackPanel Grid.Row="2" Orientation="Vertical">
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>饮品</TextBlock>
<ComboBox Margin="10,0"
Width="100"
ItemsSource="{Binding Coffees}"
SelectedItem="{Binding SelectedCoffee}" />
<Button Margin="10,0"
Command="{}"
Content="制作"/>
<Button Margin="10,0"
Command="{}"
Content="停止制作"/>
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>模式</TextBlock>
<ComboBox Margin="10,0"
Width="100"
ItemsSource="{Binding CoffeeCmds}"
SelectedItem="{Binding SelectedCoffeeCmd}"/>
<Button Margin="10,0"
Command="{}"
Content="设置" Cursor="Hand"/>
</StackPanel>
</StackPanel>
</Grid>
</GroupBox>
<GroupBox Header="单片机控制"
FontSize="18"
Grid.Row="1" Grid.ColumnSpan="2"
Margin="0,0,0,10">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="13*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" >
<TextBlock FontSize="12">连接状态</TextBlock>
<TextBlock FontSize="12"></TextBlock>
</Grid>
<Grid Grid.Column="1" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" >
<TextBlock FontSize="12" HorizontalAlignment="Center">舵机控制</TextBlock>

</Grid>
<Grid Grid.Row="0" Grid.Column="1">
<ComboBox Margin="0,0,0,0" FontSize="12" Width="60">
<ComboBoxItem IsSelected="true">舵机1</ComboBoxItem>
<ComboBoxItem>舵机2</ComboBoxItem>
<ComboBoxItem>舵机3</ComboBoxItem>
<ComboBoxItem>舵机4</ComboBoxItem>
</ComboBox>
</Grid>
<Grid Grid.Row="1" Grid.Column="0">
<Button FontSize="15" HorizontalAlignment="Center">输出</Button>
</Grid>
<Grid Grid.Row="1" Grid.Column="1" Width="60">
<TextBox>1</TextBox>
</Grid>
</Grid>
</Grid>
<Grid Grid.Column="2" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" >
<TextBlock FontSize="12" HorizontalAlignment="Center">DI输入</TextBlock>
</Grid>
<Grid Grid.Row="1" Grid.Column="0" Width="400">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<CheckBox FontSize="12" IsEnabled="false" Name="CH0">DI0</CheckBox>
</Grid>
<Grid Grid.Column="1">
<CheckBox FontSize="12" IsEnabled="false" Name="CH1">DI1</CheckBox>
</Grid>
<Grid Grid.Column="2">
<CheckBox FontSize="12" IsEnabled="false" Name="CH2">DI2</CheckBox>
</Grid>
<Grid Grid.Column="3">
<CheckBox FontSize="12" IsEnabled="false" Name="CH3">DI3</CheckBox>
</Grid>
<Grid Grid.Column="4">
<CheckBox FontSize="12" IsEnabled="false" Name="CH4">DI4</CheckBox>
</Grid>
<Grid Grid.Column="5">
<CheckBox FontSize="12" IsEnabled="false" Name="CH5">DI5</CheckBox>
</Grid>
<Grid Grid.Column="6">
<CheckBox FontSize="12" IsEnabled="false" Name="CH6">DI6</CheckBox>
</Grid>
<Grid Grid.Column="7">
<CheckBox FontSize="12" IsEnabled="false" Name="CH7">DI7</CheckBox>
</Grid>
</Grid>

</Grid>
</Grid>
</Grid>

<Grid Grid.Column="3" >
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBlock FontSize="12" HorizontalAlignment="Center">DO输出</TextBlock>
</Grid>
<Grid Grid.Column="1" Grid.Row="0">
<ComboBox Width="50" FontSize="12" HorizontalAlignment="Center">
<ComboBoxItem IsSelected="true">DO0</ComboBoxItem>
<ComboBoxItem>DO1</ComboBoxItem>
<ComboBoxItem>DO2</ComboBoxItem>
<ComboBoxItem>DO3</ComboBoxItem>
<ComboBoxItem>DO4</ComboBoxItem>
<ComboBoxItem>DO5</ComboBoxItem>
<ComboBoxItem>DO6</ComboBoxItem>
<ComboBoxItem>DO7</ComboBoxItem>
</ComboBox>
</Grid>
<Grid Grid.Column="0" Grid.Row="1">
<Button Width="50">输出</Button>
</Grid>
<Grid Grid.Column="1" Grid.Row="1">
<RadioButton FontSize="12" IsChecked="true">True</RadioButton>
<RadioButton Margin="50,0,0,0" FontSize="12">false</RadioButton>
</Grid>
</Grid>
</Grid>
</GroupBox>
</Grid>
</UserControl>

+ 35
- 0
BPASmartClient.Morkt.JAKA.JC/View/DebugView.xaml.cs Просмотреть файл

@@ -0,0 +1,35 @@
using BPASmartClient.Helper;
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.MorkTJAKAJC.View
{
/// <summary>
/// DebugView.xaml 的交互逻辑
/// </summary>
public partial class DebugView : UserControl
{
public DebugView()
{
InitializeComponent();
}

private void Dubug_Unloaded(object sender, RoutedEventArgs e)
{
ThreadManage.GetInstance().StopTask("MorkT-状态刷新");
ThreadManage.GetInstance().StopTask("MorkT-传感器监视");
}
}
}

+ 237
- 0
BPASmartClient.Morkt.JAKA.JC/ViewModel/DebugViewModel.cs Просмотреть файл

@@ -0,0 +1,237 @@
using BPASmartClient.Business;
using BPASmartClient.Device;
using BPASmartClient.DRCoffee;
using BPASmartClient.EventBus;
using BPASmartClient.GSIceCream;
using BPASmartClient.Helper;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Message;
using BPASmartClient.Model;
using BPASmartClient.Model.乐白机器人;
using BPASmartClient.Model.冰淇淋.Enum;
using BPASmartClient.Model.单片机;
using BPASmartClient.Model.单片机.Enum;
using BPASmartClient.Model.咖啡机.Enum;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;

namespace BPASmartClient.MorkTJAKAJC.ViewModel;
public class DebugViewModel : ObservableObject
{
#region 乐白机器人
/// <summary>
/// 乐白机器人连接状态
/// </summary>
public string RobotConnected { get { return _robotConnected; } set { _robotConnected = value; OnPropertyChanged(); } }
private string _robotConnected { get; set; }
/// <summary>
/// 乐白机器人的模式状态
/// </summary>
public string RobotMode { get { return _robotMode; } set { _robotMode = value; OnPropertyChanged(); } }
private string _robotMode { get; set; }
/// <summary>
/// 机器人控制指令
/// </summary>
public RelayCommand<object> Button_RobotControlCommand { get; set; }
/// <summary>
/// 机器人控制
/// </summary>
/// <param name="o"></param>
private void Button_RobotControl(object o)
{
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiControlEvent { DeviceId = DeviceId, LebaiControl = o.ToString() });
}

#endregion


#region 果汁机
/// <summary>
/// 果汁机的连接状态
/// </summary>
public string JuicerConnected { get { return _JuicerConnected; } set { _JuicerConnected = value; OnPropertyChanged(); } }
private string _JuicerConnected { get; set; }
/// <summary>
/// 果汁机的状态
/// </summary>
public string JuicerState { get { return _JuicerState; } set { _JuicerState = value; OnPropertyChanged(); } }
private string _JuicerState { get; set; }
#endregion

#region 咖啡机
/// <summary>
/// 咖啡机连接状态
/// </summary>
public string CoffeeConnected { get { return _coffeeConnected; } set { _coffeeConnected = value; OnPropertyChanged(); } }
private string _coffeeConnected { get; set; }
/// <summary>
/// 咖啡机状态
/// </summary>
public string CoffeeStatus { get { return _coffeeStatus; } set { _coffeeStatus = value; OnPropertyChanged(); } }
private string _coffeeStatus { get; set; }
/// <summary>
/// 应用状态
/// </summary>
public string AppStatus { get { return _appStatus; } set { _appStatus = value; OnPropertyChanged(); } }
private string _appStatus { get; set; }
/// <summary>
/// 告警
/// </summary>
public string Warning { get { return _warning; } set { _warning = value; OnPropertyChanged(); } }
public string _warning { get; set; }
/// <summary>
/// 故障信息
/// </summary>
public string CaffeeFault { get { return _caffeeFault; } set { _caffeeFault = value; OnPropertyChanged(); } }
public string _caffeeFault { get; set; }

public List<string> Coffees { get; set; } = new List<string>();
public string SelectedCoffee { get; set; }

public List<string> CoffeeCmds { get; set; } = new List<string>();
public string SelectedCoffeeCmd { get; set; }
/// <summary>
/// 制作咖啡
/// </summary>
public RelayCommand Button_MakeCoffeeCommand { get; set; }
/// <summary>
/// 停止制作咖啡
/// </summary>
public RelayCommand Button_StopMakeCoffeCommand { get; set; }
/// <summary>
/// 咖啡模式设置
/// </summary>
public RelayCommand Button_CoffeeModeSetCommand { get; set; }

private void Button_MakeCoffee()
{
EventBus.EventBus.GetInstance().Publish(new DRCoffee_MakeCoffeeEvent() { DeviceId = DeviceId, DrinkCode = (DrCoffeeDrinksCode)Enum.Parse(typeof(DrCoffeeDrinksCode), SelectedCoffee)});
}
private void Button_StopMakeCoffe()
{
EventBus.EventBus.GetInstance().Publish(new DRCoffee_CancelMakeCoffeeEvent() { DeviceId = DeviceId });
}
private void Button_CoffeeModeSet()
{
EventBus.EventBus.GetInstance().Publish(new DRCoffee_CoffeeCommCmdEvent() { DeviceId = DeviceId, CommCmd = (DrCoffeeCommCmd)Enum.Parse(typeof(DrCoffeeCommCmd), SelectedCoffeeCmd)});
}
#endregion

#region 单片机
/// <summary>
/// 咖啡杯或冰淇淋杯落杯
/// </summary>
public RelayCommand<object> Button_CupControlCommand { get; set; }
/// <summary>
/// 单片机冰淇淋机器制冷
/// </summary>
public RelayCommand Button_SCChipRefrigerationCommand { get; set; }
/// <summary>
/// 单片机冰淇淋机器打料
/// </summary>
public RelayCommand Button_SCChipDischargeCommand { get; set; }
/// <summary>
/// 模拟测试
/// </summary>
public RelayCommand Button_SCChipTestCommand { get; set; }

private void Button_CupControl(object CupType)
{
EventBus.EventBus.GetInstance().Publish(new SCChip_TakeCupEvent() { DeviceId = DeviceId, Cup = (IC_CUP)Enum.Parse(typeof(IC_CUP), CupType.ToString()) });
}

private void Button_SCChipRefrigeration()
{
EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = true });
Thread.Sleep(500);
EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = false });
}

private void Button_SCChipDischarge()
{
EventBus.EventBus.GetInstance().Publish(new SCChip_MakeIceCreamEvent { DeviceId = DeviceId, SteeringEngine = IC_SE.SE_2 });
}

#endregion

/// <summary>
/// 设备ID
/// </summary>
public int DeviceId { get; set; }
/// <summary>
/// 设备数据
/// </summary>
public ObservableCollection<VariableMonitor> variableMonitors { get; set; }
public DebugViewModel()
{
Button_RobotControlCommand = new RelayCommand<object>(Button_RobotControl);
Button_MakeCoffeeCommand = new RelayCommand(Button_MakeCoffee);
Button_StopMakeCoffeCommand = new RelayCommand(Button_StopMakeCoffe);
Button_CoffeeModeSetCommand = new RelayCommand(Button_CoffeeModeSet);

Button_CupControlCommand = new RelayCommand<object>(Button_CupControl);
Button_SCChipRefrigerationCommand = new RelayCommand(Button_SCChipRefrigeration);
Button_SCChipDischargeCommand = new RelayCommand(Button_SCChipDischarge);
Button_SCChipTestCommand = new RelayCommand(() =>
{
Button_SCChipRefrigeration();
Thread.Sleep(50);
Button_SCChipDischarge();
});

foreach (DrCoffeeDrinksCode code in Enum.GetValues(typeof(DrCoffeeDrinksCode)))
{
Coffees.Add(code.ToString());
}
SelectedCoffee = Coffees[0];
foreach (DrCoffeeCommCmd code in Enum.GetValues(typeof(DrCoffeeCommCmd)))
{
CoffeeCmds.Add(code.ToString());
}
SelectedCoffeeCmd = CoffeeCmds[0];

Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices().ForEach(device =>
{
if (device.Name == "MorkT") DeviceId = device.DeviceId
;
});



ThreadManage.GetInstance().StartLong(new Action(() =>
{

variableMonitors = Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.FirstOrDefault(p => p.DeviceId == DeviceId)?.variableMonitors;

if (variableMonitors != null && variableMonitors.Count > 0)
{
RobotConnected = variableMonitors.FirstOrDefault(p=>p.Notes == "机器人连接状态").CurrentValue == "True" ? "已连接" : "未连接";
CoffeeConnected = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机连接状态").CurrentValue == "True" ? "已连接" : "未连接";
JuicerConnected = variableMonitors.FirstOrDefault(p => p.Notes == "果汁机连接状态").CurrentValue == "True" ? "已连接" : "未连接";

RobotMode = variableMonitors.FirstOrDefault(p => p.Notes == "机器人状态").CurrentValue;

CoffeeStatus = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机状态").CurrentValue;
AppStatus = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机应用状态").CurrentValue;
Warning = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机告警").CurrentValue;
CaffeeFault = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机故障").CurrentValue;


}
Thread.Sleep(500);
}), "MorkT-状态刷新");
}
}


+ 94
- 0
BPASmartClient.Morkt.JAKA.JC/ViewModel/MonitorViewModel.cs Просмотреть файл

@@ -0,0 +1,94 @@
using BPASmartClient.Business;
using BPASmartClient.Helper;
using BPASmartClient.Model.乐白机器人;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;

namespace BPASmartClient.MorkTJAKAJC.ViewModel
{

public class MonitorViewModel: ObservableObject
{
#region 传感器
/// <summary>
/// 机器人夹爪传感器
/// </summary>
public bool RobotSenser { get { return _robotSenser; } set { _robotSenser = value; OnPropertyChanged(); } }
private bool _robotSenser;
/// <summary>
/// 冰淇淋出口传感器
/// </summary>
public bool IceCreamSenser { get { return _iceCreamSenser; } set { _iceCreamSenser = value; OnPropertyChanged(); } }
private bool _iceCreamSenser;
/// <summary>
/// 取餐口检测传感器
/// </summary>
public bool TakeMealSenser { get { return _takeMealSenser; } set { _takeMealSenser = value; OnPropertyChanged(); } }
private bool _takeMealSenser;

#endregion


/// <summary>
/// 设备ID
/// </summary>
int DeviceId;
public MonitorViewModel()
{
Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices().ForEach(device =>
{
if (device.Name == "MorkT") DeviceId = device.DeviceId;

});
ThreadManage.GetInstance().StartLong(new Action(() =>
{
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetTCPInputEvent() { DeviceId = DeviceId, Pin = 1 },(res)=>
{
if(res != null&& res.Length>0&& res[0] is bool b)
{
RobotSenser = b;
}
});

EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent() { DeviceId = DeviceId, Pin = 0 }, (res) =>
{
if (res != null && res.Length > 0 && res[0] is bool b)
{
TakeMealSenser = b;
}
});

EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetTCPInputEvent() { DeviceId = DeviceId, Pin = 3 }, (res) =>
{
if (res != null && res.Length > 0 && res[0] is bool b)
{
IceCreamSenser = b;
}
});
Thread.Sleep(500);
}), "MorkT-传感器监视");
}
}

public class BoolToColorConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool) value? new SolidColorBrush(Color.FromRgb(144, 238, 144)) : new SolidColorBrush(Color.FromRgb(178, 34, 34));
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

}

Загрузка…
Отмена
Сохранить