@@ -20,6 +20,7 @@ | |||
<ItemGroup> | |||
<None Remove="Fonts\iconfont.ttf" /> | |||
<None Remove="Fonts\Quartz Regular.ttf" /> | |||
<None Remove="Image\bg.png" /> | |||
<None Remove="Image\btn_close.png" /> | |||
<None Remove="Image\btn_normal.png" /> | |||
@@ -89,6 +90,7 @@ | |||
<None Remove="Image\告警\预警f44b4b.png" /> | |||
<None Remove="Image\图层1.png" /> | |||
<None Remove="Image\圆形.png" /> | |||
<None Remove="Image\圆角矩形 30 拷贝.png" /> | |||
<None Remove="Image\圆角矩形 4.png" /> | |||
<None Remove="Image\圆角矩形.png" /> | |||
<None Remove="Image\底部背景.png" /> | |||
@@ -183,6 +185,7 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Resource Include="Fonts\Quartz Regular.ttf" /> | |||
<Resource Include="Image\btn_close.png" /> | |||
<Resource Include="Image\ComboBoxPopSelect.png" /> | |||
<Resource Include="Image\ComboBoxSelect.png" /> | |||
@@ -203,6 +206,7 @@ | |||
<Resource Include="Image\界面2.png"> | |||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | |||
</Resource> | |||
<Resource Include="Image\圆角矩形 30 拷贝.png" /> | |||
<Resource Include="Image\背景2.png" /> | |||
<Resource Include="Image\边角.png" /> | |||
</ItemGroup> | |||
@@ -3,18 +3,33 @@ | |||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"> | |||
<ImageBrush x:Key="imageBJ" ImageSource="/BPASmartClient.CustomResource;component/Image/图层1.png" /> | |||
<ImageBrush x:Key="image1" ImageSource="/BPASmartClient.CustomResource;component/Image/shape.png" /> | |||
<ImageBrush x:Key="image2" ImageSource="/BPASmartClient.CustomResource;component/Image/shape1.png" /> | |||
<!--#region Color--> | |||
<SolidColorBrush x:Key="foreground" Color="#a2c2e8" /> | |||
<SolidColorBrush x:Key="borderBrush" Color="#FF074B92" /> | |||
<SolidColorBrush x:Key="Titleforeground" Color="#FF07D7FF" /> | |||
<SolidColorBrush x:Key="DataGridColumnHeaderColor" Color="#00c2f4"/> | |||
<SolidColorBrush x:Key="LabelColor" Color="#FF00EEF3"/> | |||
<SolidColorBrush x:Key="MainTitleforeground" Color="#feffff"/> | |||
<SolidColorBrush x:Key="ButtonSelectForeground" Color="#4fade8"/> | |||
<SolidColorBrush x:Key="ButtonUnSelectForeground" Color="#3afdff"/> | |||
<SolidColorBrush x:Key="MeunSelectForeground" Color="#8f723c"/> | |||
<SolidColorBrush x:Key="MeunUnSelectForeground" Color="White"/> | |||
<!--<SolidColorBrush x:Key="foreground" Color="Red" /> | |||
<SolidColorBrush x:Key="borderBrush" Color="Red" /> | |||
<SolidColorBrush x:Key="Titleforeground" Color="Red" /> | |||
<SolidColorBrush x:Key="LabelColor" Color="Red" /> | |||
<SolidColorBrush x:Key="DataGridColumnHeaderColor" Color="Red"/> | |||
<SolidColorBrush x:Key="MainTitleforeground" Color="Red"/> | |||
<SolidColorBrush x:Key="ButtonSelectForeground" Color="Red"/> | |||
<SolidColorBrush x:Key="ButtonUnSelectForeground" Color="Red"/> | |||
<SolidColorBrush x:Key="MeunSelectForeground" Color="Red"/> | |||
<SolidColorBrush x:Key="MeunUnSelectForeground" Color="Red"/>--> | |||
<!--#endregion--> | |||
<!--#region Label--> | |||
<Style TargetType="{x:Type Label}"> | |||
<Setter Property="Foreground" Value="#FF00EEF3" /> | |||
<Setter Property="Foreground" Value="{DynamicResource LabelColor}" /> | |||
<Setter Property="Background" Value="Transparent" /> | |||
<Setter Property="Padding" Value="5" /> | |||
<Setter Property="HorizontalContentAlignment" Value="Left" /> | |||
@@ -46,10 +61,6 @@ | |||
</Style> | |||
<!--#endregion--> | |||
<!--#region Color--> | |||
<SolidColorBrush x:Key="foreground" Color="#FFA2C2E8" /> | |||
<!--#endregion--> | |||
<!--#region ToggleButton--> | |||
<Style x:Key="StatusBtnStyle告警" TargetType="ToggleButton"> | |||
<Style.Setters> | |||
@@ -158,6 +169,10 @@ | |||
<!--#endregion--> | |||
<!--#region Image--> | |||
<ImageBrush x:Key="imageBJ" ImageSource="/BPASmartClient.CustomResource;component/Image/图层1.png" /> | |||
<ImageBrush x:Key="image1" ImageSource="/BPASmartClient.CustomResource;component/Image/shape.png" /> | |||
<ImageBrush x:Key="image2" ImageSource="/BPASmartClient.CustomResource;component/Image/shape1.png" /> | |||
<Style TargetType="Image"> | |||
<Style.Setters> | |||
<Setter Property="UseLayoutRounding" Value="True" /> | |||
@@ -353,7 +368,6 @@ | |||
</Style.Setters> | |||
</Style> | |||
<Style x:Key="button_select" TargetType="Border"> | |||
<Style.Setters> | |||
@@ -365,7 +379,6 @@ | |||
</Style.Setters> | |||
</Style> | |||
<Style x:Key="bordertopL" TargetType="Border"> | |||
<Style.Setters> | |||
<Setter Property="Height" Value="80" /> | |||
@@ -962,13 +975,13 @@ | |||
<Style.Setters> | |||
<Setter Property="VerticalContentAlignment" Value="Center" /> | |||
<Setter Property="Cursor" Value="Hand" /> | |||
<Setter Property="Foreground" Value="{DynamicResource foreground}" /> | |||
<Setter Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
<Setter Property="Height" Value="25" /> | |||
<Setter Property="Template"> | |||
<Setter.Value> | |||
<ControlTemplate TargetType="Button"> | |||
<Border x:Name="BD" Cursor="Hand"> | |||
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal"> | |||
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Cursor="Hand"> | |||
<!--<Border Width="16" Margin="5"> | |||
<Border.Background> | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/顶部切图/返回按钮图标.png" /> | |||
@@ -979,7 +992,7 @@ | |||
Margin="10,0,10,0" | |||
VerticalAlignment="Center" | |||
FontSize="14" | |||
Foreground="#4fade8" | |||
Foreground="{DynamicResource ButtonSelectForeground}" | |||
Text="{TemplateBinding Content}" /> | |||
<!-- Text="{TemplateBinding Content}" --> | |||
</StackPanel> | |||
@@ -991,7 +1004,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/顶部切图/返回按钮2.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#4fade8" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
</Trigger> | |||
<Trigger Property="IsMouseOver" Value="False"> | |||
<Setter TargetName="BD" Property="Background"> | |||
@@ -999,7 +1012,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/顶部切图/返回按钮1.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#4fade8" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
</Trigger> | |||
<Trigger Property="IsEnabled" Value="False"> | |||
<Setter TargetName="BD" Property="Background"> | |||
@@ -1007,7 +1020,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/buttonOn.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#3afdff" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonUnSelectForeground}" /> | |||
</Trigger> | |||
</ControlTemplate.Triggers> | |||
</ControlTemplate> | |||
@@ -1020,7 +1033,7 @@ | |||
<Style.Setters> | |||
<Setter Property="VerticalContentAlignment" Value="Center" /> | |||
<Setter Property="Cursor" Value="Hand" /> | |||
<Setter Property="Foreground" Value="{DynamicResource foreground}" /> | |||
<Setter Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
<Setter Property="Width" Value="68" /> | |||
<Setter Property="Height" Value="25" /> | |||
<Setter Property="Template"> | |||
@@ -1040,7 +1053,7 @@ | |||
x:Name="textBlock" | |||
VerticalAlignment="Center" | |||
FontSize="14" | |||
Foreground="#4fade8" | |||
Foreground="{DynamicResource ButtonSelectForeground}" | |||
Text="{TemplateBinding Content}" /> | |||
<!-- Text="{TemplateBinding Content}" --> | |||
</StackPanel> | |||
@@ -1052,7 +1065,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/顶部切图/返回按钮2.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#4fade8" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
</Trigger> | |||
<Trigger Property="IsMouseOver" Value="False"> | |||
<Setter TargetName="BD" Property="Background"> | |||
@@ -1060,7 +1073,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/顶部切图/返回按钮1.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#4fade8" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonSelectForeground}" /> | |||
</Trigger> | |||
<Trigger Property="IsEnabled" Value="False"> | |||
<Setter TargetName="BD" Property="Background"> | |||
@@ -1068,7 +1081,7 @@ | |||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/buttonOn.png" /> | |||
</Setter.Value> | |||
</Setter> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="#3afdff" /> | |||
<Setter TargetName="textBlock" Property="Foreground" Value="{DynamicResource ButtonUnSelectForeground}" /> | |||
</Trigger> | |||
</ControlTemplate.Triggers> | |||
</ControlTemplate> | |||
@@ -1640,7 +1653,7 @@ | |||
<!--#region TextBlock--> | |||
<Style TargetType="TextBlock"> | |||
<Style.Setters> | |||
<Setter Property="Foreground" Value="#a2c2e8" /> | |||
<Setter Property="Foreground" Value="{DynamicResource foreground}" /> | |||
<Setter Property="HorizontalAlignment" Value="Left" /> | |||
<Setter Property="VerticalAlignment" Value="Center" /> | |||
<Setter Property="FontSize" Value="20" /> | |||
@@ -1653,15 +1666,22 @@ | |||
<Setter Property="VerticalAlignment" Value="Center" /> | |||
<Setter Property="HorizontalAlignment" Value="Center" /> | |||
</Style> | |||
<Style x:Key="数码管Text" TargetType="TextBlock"> | |||
<Setter Property="FontFamily" Value="../Fonts/#Quartz M"></Setter> | |||
<Setter Property="FontSize" Value="18" /> | |||
<Setter Property="Foreground" Value="{DynamicResource foreground}" /> | |||
<Setter Property="VerticalAlignment" Value="Center" /> | |||
<Setter Property="HorizontalAlignment" Value="Center" /> | |||
</Style> | |||
<!--#endregion--> | |||
<!--#region GroupBox--> | |||
<BorderGapMaskConverter x:Key="BorderGapMaskConverter" /> | |||
<Style TargetType="{x:Type GroupBox}"> | |||
<Setter Property="BorderThickness" Value="0" /> | |||
<Setter Property="Background" Value="Transparent" /> | |||
<Setter Property="Foreground" Value="#FF68D8FE" /> | |||
<Setter Property="Foreground" Value="{DynamicResource Titleforeground}" /> | |||
<Setter Property="Template"> | |||
<Setter.Value> | |||
<ControlTemplate TargetType="{x:Type GroupBox}"> | |||
@@ -1721,7 +1741,7 @@ | |||
</Style> | |||
<!--#endregion--> | |||
<!-- 空MenuHeader --> | |||
<!--#region 空MenuHeader--> | |||
<Style x:Key="MenuItem_NonStyle" TargetType="{x:Type MenuItem}"> | |||
<Setter Property="Height" Value="Auto" /> | |||
<Setter Property="Template"> | |||
@@ -1737,4 +1757,6 @@ | |||
</Setter.Value> | |||
</Setter> | |||
</Style> | |||
<!--#endregion--> | |||
</ResourceDictionary> |
@@ -22,14 +22,14 @@ | |||
<RowDefinition /> | |||
</Grid.RowDefinitions> | |||
<StackPanel Grid.Row="0" Orientation="Horizontal"> | |||
<TextBlock x:Name="time" FontSize="16">14:48:30</TextBlock> | |||
<TextBlock x:Name="time" FontSize="16" FontFamily="../Fonts/#Quartz M">14:48:30</TextBlock> | |||
<Image Margin="10,0,0,0" Style="{DynamicResource timeImage}" /> | |||
</StackPanel> | |||
<StackPanel Grid.Row="1" Orientation="Horizontal"> | |||
<TextBlock x:Name="dateRL" FontSize="10">星期一</TextBlock> | |||
<TextBlock x:Name="dateRL" FontSize="10" FontFamily="../Fonts/#Quartz M">星期一</TextBlock> | |||
<TextBlock | |||
x:Name="date" | |||
x:Name="date" FontFamily="../Fonts/#Quartz M" | |||
Margin="10,0,0,0" | |||
FontSize="10"> | |||
2021-11-13 | |||
@@ -46,7 +46,7 @@ namespace BPASmartClient.CustomResource.UserControls | |||
} | |||
else | |||
{ | |||
return PenLineCap.Round; | |||
return PenLineCap.Flat; | |||
} | |||
} | |||
@@ -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() | |||
{ | |||
} | |||
@@ -0,0 +1,13 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>net6.0</TargetFramework> | |||
<ImplicitUsings>enable</ImplicitUsings> | |||
<Nullable>enable</Nullable> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | |||
</ItemGroup> | |||
</Project> |
@@ -0,0 +1,317 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Configuration; | |||
using System.Linq; | |||
using System.Threading; | |||
using System.Collections.Concurrent; | |||
using System.Diagnostics; | |||
using System.Threading.Tasks; | |||
using BPASmartClient.Device; | |||
using BPA.Message.Enum; | |||
using BPA.Message; | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.Model.咖啡机.Enum; | |||
using BPASmartClient.Model; | |||
using BPASmartClient.EventBus; | |||
using static BPASmartClient.EventBus.EventBus; | |||
using BPASmartClient.Model.PLC; | |||
using BPASmartClient.Model.单片机; | |||
namespace BPASmartClient.MorkTJuicer | |||
{ | |||
/* | |||
* 冰淇淋咖啡机组合套装 | |||
* 物料位置: | |||
* 1:冰淇料 | |||
* 2:冰淇淋杯 | |||
* 5:咖啡 | |||
* 6:咖啡杯 | |||
* 9: 茶 | |||
* 10: 茶杯 | |||
*/ | |||
public class Control_MORKJC : BaseDevice | |||
{ | |||
GVL_MORKJC mORKD = new GVL_MORKJC(); | |||
//物料存放位置 | |||
private Dictionary<string, PolymerBatching> batchings = new Dictionary<string, PolymerBatching>(); | |||
//容器位置 | |||
private string holderLoc; | |||
//主料位置 | |||
private string mainMaterialLoc; | |||
//子订单ID | |||
private string subOrderId; | |||
private bool enableFunny = false; | |||
private DateTime lastRecvdOrder = DateTime.Now; | |||
private bool working = false; | |||
/// <summary> | |||
/// 果汁机做法,true:热饮,false:冷饮 | |||
/// </summary> | |||
private bool GuMake = false; | |||
private void OrderChange(string subid, ORDER_STATUS oRDER_STATUS) | |||
{ | |||
EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { Status = oRDER_STATUS, SubOrderId = subid, deviceClientType = DeviceType }); | |||
} | |||
//private SerialPortClient commProxy; | |||
public void ConnectOk() | |||
{ | |||
} | |||
ConcurrentQueue<MorkOrderPush> morkOrderPushes = new ConcurrentQueue<MorkOrderPush>(); | |||
public void Init() | |||
{ | |||
//构建所有商品物料信息 | |||
batchings = PolymerBatching.BuildAll(); | |||
Main(); | |||
ReadData(); | |||
ThreadManage.GetInstance().StartLong(new Action(() => | |||
{ | |||
while (morkOrderPushes.Count > 0) | |||
{ | |||
while (enableFunny) { Thread.Sleep(10); } | |||
DeviceProcessLogShow("当前非自嗨模式,允许开工"); | |||
working = true; | |||
if (morkOrderPushes.TryDequeue(out MorkOrderPush order)) | |||
{ | |||
DeviceProcessLogShow($"开始制作订单[{order.SortNum}]"); | |||
//商品类型 | |||
GOODS_TYPE currentGoodsType = GOODS_TYPE.NEITHER; | |||
//子订单ID | |||
subOrderId = order.SuborderId; | |||
//遍历物料 | |||
foreach (var item in order.GoodBatchings) | |||
{ | |||
var res = Json<BatchingInfoPar>.Data.orderMaterialDelivery.BatchingInfo.FirstOrDefault(p => p.BatchingId == item.BatchingId); | |||
if (res != null) | |||
{ | |||
//获取主料和容器位置 | |||
switch (batchings[res.BatchingLoc].BatchingClass) | |||
{ | |||
case BATCHING_CLASS.HOLDER: | |||
holderLoc = res.BatchingLoc; | |||
break; | |||
case BATCHING_CLASS.MAIN_MATERIAL: | |||
// mainMaterialLoc ="1"; | |||
mainMaterialLoc = res.BatchingLoc; | |||
//验证商品是咖啡还是冰淇淋 | |||
if (ValidateGoodsByBatching(res.BatchingLoc) != GOODS_TYPE.NEITHER) | |||
{ | |||
//获取当前物料所属商品类型 | |||
currentGoodsType = ValidateGoodsByBatching(res.BatchingLoc); | |||
} | |||
break; | |||
} | |||
} | |||
} | |||
//根据商品类型执行具体制作流程 | |||
switch (currentGoodsType) | |||
{ | |||
case GOODS_TYPE.JUICE: | |||
GuMake = order.MakeID == "2"; | |||
DoJuicer(); | |||
break; | |||
case GOODS_TYPE.NEITHER: | |||
DeviceProcessLogShow("未知的商品类型"); | |||
break; | |||
} | |||
} | |||
working = false; | |||
lastRecvdOrder = DateTime.Now; | |||
} | |||
Thread.Sleep(1000); | |||
}), "订单制作"); | |||
} | |||
public void Main() | |||
{ | |||
//开始心跳刷新,根据咖啡机及冰淇淋机来判断 | |||
//ThreadManage.GetInstance().StartLong(new Action(() => | |||
//{ | |||
// Thread.Sleep(100); | |||
//}), "MORK-IC心跳刷新"); | |||
} | |||
public void DataParse<T>(T order) | |||
{ | |||
if (order is MorkOrderPush morkOrderPush) | |||
{ | |||
morkOrderPushes.Enqueue(morkOrderPush); | |||
} | |||
} | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
/// <param name="batchingLoc">物料位置</param> | |||
private GOODS_TYPE ValidateGoodsByBatching(string batchingLoc) | |||
{ | |||
if (batchings.ContainsKey(batchingLoc)) | |||
return batchings[batchingLoc].GoodsType; | |||
return GOODS_TYPE.NEITHER; | |||
} | |||
private AutoResetEvent are = new AutoResetEvent(false); | |||
private T GetStatus<T>(string key) | |||
{ | |||
if (peripheralStatus.ContainsKey(key)) | |||
{ | |||
if (peripheralStatus[key] != null) | |||
{ | |||
return (T)(peripheralStatus[key]); | |||
} | |||
} | |||
return default; | |||
} | |||
private void Wait(int value) | |||
{ | |||
while (!((GetStatus<int>("Get_RobotAO1") == value) && GetStatus<int>("GetProgramStatus") == 0))//判断文件是否已经执行结束 且 文件末端变量值==文件名 | |||
{ | |||
Thread.Sleep(5); | |||
} | |||
} | |||
int[] devStatusBy = new int[2] { 0, 0 }; | |||
/// <summary> | |||
/// 果汁机控制信号 | |||
/// </summary> | |||
private byte JuicerNum; | |||
/// <summary> | |||
/// 做果汁 | |||
/// </summary> | |||
private void DoJuicer() | |||
{ | |||
#region 接果汁流程 | |||
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COOKING); | |||
try | |||
{ | |||
int JuicerNum1 = int.Parse(mainMaterialLoc); | |||
switch (JuicerNum1) | |||
{ | |||
case 52: | |||
if (GuMake) | |||
{ | |||
JuicerNum = 0x00; | |||
} | |||
else | |||
{ | |||
JuicerNum = 0x01; | |||
} | |||
break; | |||
case 53: | |||
if (GuMake) | |||
{ | |||
JuicerNum = 0x02; | |||
} | |||
else | |||
{ | |||
JuicerNum = 0x03; | |||
} | |||
break; | |||
case 54: | |||
if (GuMake) | |||
{ | |||
JuicerNum = 0x04; | |||
} | |||
else | |||
{ | |||
JuicerNum = 0x05; | |||
} | |||
break; | |||
case 55: | |||
if (GuMake) | |||
{ | |||
JuicerNum = 0x06; | |||
} | |||
else | |||
{ | |||
JuicerNum = 0x07; | |||
} | |||
break; | |||
default: | |||
JuicerNum = 0x00; | |||
break; | |||
} | |||
var devStatus = GetStatus<int[]>("GetDeviceStatus"); | |||
var devStatus1 = Convert.ToString(devStatus[0], 2); | |||
var devStatus2 = devStatus[1]; | |||
if (devStatus1.IndexOf("0") == 1 && devStatus2 == 0) | |||
{ | |||
new WriteJuicer() { Value = JuicerNum }.Publish(); | |||
Thread.Sleep(100); | |||
devStatusBy = GetStatus<int[]>("GetDeviceStatus"); | |||
while (!(devStatusBy[1] == 0)) | |||
{ | |||
Thread.Sleep(100); | |||
devStatusBy = GetStatus<int[]>("GetDeviceStatus"); | |||
while (devStatusBy.Length != 2) | |||
{ | |||
Thread.Sleep(100); | |||
devStatusBy = GetStatus<int[]>("GetDeviceStatus"); | |||
} | |||
} | |||
devStatusBy = GetStatus<int[]>("GetDeviceStatus"); | |||
Thread.Sleep(5000); | |||
OrderChange(subOrderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE); | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
DeviceProcessLogShow("获取果汁机状态失败"); | |||
} | |||
#endregion | |||
} | |||
public override DeviceClientType DeviceType => throw new NotImplementedException(); | |||
private T McuRead<T>(string tagName, object par) | |||
{ | |||
new ReadMcu() { DeviceId = DeviceId, TagName = tagName, ReadPar = par }; | |||
if (peripheralStatus.ContainsKey(tagName)) | |||
{ | |||
if (peripheralStatus[tagName] != null) | |||
{ | |||
return (T)peripheralStatus[tagName]; | |||
} | |||
} | |||
return default; | |||
} | |||
public void SimOrder<T>(T simOrder) | |||
{ | |||
} | |||
public override void DoMain() | |||
{ | |||
} | |||
public override void Stop() | |||
{ | |||
} | |||
public override void ReadData() | |||
{ | |||
} | |||
public override void MainTask() | |||
{ | |||
} | |||
public override void ResetProgram() | |||
{ | |||
} | |||
public override void SimOrder() | |||
{ | |||
} | |||
} | |||
} |
@@ -0,0 +1,8 @@ | |||
using BPASmartClient.Device; | |||
namespace BPASmartClient.MorkTJuicer | |||
{ | |||
public class GVL_MORKJC : IStatus | |||
{ | |||
} | |||
} |
@@ -0,0 +1,77 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.MorkTJuicer | |||
{ | |||
internal enum GOODS_TYPE | |||
{ | |||
/// <summary> | |||
/// 未知 | |||
/// </summary> | |||
NEITHER, | |||
/// <summary> | |||
/// 果汁 | |||
/// </summary> | |||
JUICE | |||
} | |||
internal enum BATCHING_CLASS | |||
{ | |||
HOLDER, | |||
MAIN_MATERIAL, | |||
} | |||
internal class PolymerBatching | |||
{ | |||
internal const string Juicer_MAIN_BATCHIN1_LOC = "52"; | |||
internal const string Juicer_MAIN_BATCHIN2_LOC = "53"; | |||
internal const string Juicer_MAIN_BATCHIN3_LOC = "54"; | |||
internal const string Juicer_MAIN_BATCHIN4_LOC = "55"; | |||
internal const string COFFEE_HOLDER_LOC = "30"; | |||
internal const string TEA_HOLDER_LOC = "51"; | |||
public static Dictionary<string, GOODS_TYPE> GOODS_TYPES = new Dictionary<string, GOODS_TYPE>() { | |||
{Juicer_MAIN_BATCHIN1_LOC,GOODS_TYPE.JUICE}, | |||
{Juicer_MAIN_BATCHIN2_LOC,GOODS_TYPE.JUICE}, | |||
{Juicer_MAIN_BATCHIN3_LOC,GOODS_TYPE.JUICE}, | |||
{Juicer_MAIN_BATCHIN4_LOC,GOODS_TYPE.JUICE}, | |||
}; | |||
public GOODS_TYPE GoodsType { get; set; } | |||
public BATCHING_CLASS BatchingClass { get; set; } | |||
private string loc; | |||
public string Loc | |||
{ | |||
get { return loc; } | |||
set | |||
{ | |||
loc = value; | |||
if (GOODS_TYPES.ContainsKey(loc)) | |||
GoodsType = GOODS_TYPES[loc]; | |||
switch (loc) | |||
{ | |||
case COFFEE_HOLDER_LOC: | |||
case TEA_HOLDER_LOC: | |||
BatchingClass = BATCHING_CLASS.HOLDER; | |||
break; | |||
default: | |||
BatchingClass = BATCHING_CLASS.MAIN_MATERIAL; | |||
break; | |||
} | |||
} | |||
} | |||
internal static Dictionary<string, PolymerBatching> BuildAll() | |||
{ | |||
Dictionary<string, PolymerBatching> temp = new Dictionary<string, PolymerBatching>(); | |||
foreach (var item in GOODS_TYPES) | |||
{ | |||
temp.Add(item.Key, new PolymerBatching() { Loc = item.Key }); | |||
} | |||
return temp; | |||
} | |||
} | |||
} |
@@ -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> | |||
@@ -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; | |||
} | |||
} | |||
@@ -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> |
@@ -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-传感器监视"); | |||
} | |||
} | |||
} |
@@ -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-状态刷新"); | |||
} | |||
} | |||
@@ -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(); | |||
} | |||
} | |||
} |
@@ -35,6 +35,7 @@ | |||
<ProjectReference Include="..\BPASmartClient.MorkS\BPASmartClient.MorkS.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Morkt.JAKA.JC\BPASmartClient.MorkTJAKAJC.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.MorkT.Lebai.JC\BPASmartClient.MorkTLebaiJC.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.MorkTJuicer\BPASmartClient.MorkTJuicer.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.MorkT\BPASmartClient.MorkT.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.SCChip\BPASmartClient.SCChip.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.ViewModel\BPASmartClient.ViewModel.csproj" /> | |||
@@ -23,7 +23,7 @@ | |||
<Border Grid.Row="0" Style="{DynamicResource border阴影边框扩展}"></Border> | |||
<Border x:Name="border" Grid.Row="1" Style="{DynamicResource border阴影边框扩展}"></Border> | |||
<Border Grid.Row="2" Style="{DynamicResource border阴影边框扩展}"></Border> | |||
<Button Grid.Row="0" Content="保存本地" Width="75" Style="{DynamicResource CommonBtn_返回}" Margin="100,0,10,0" HorizontalAlignment="Right" VerticalAlignment="Center" Click="Button_Click" Cursor="Hand"/> | |||
<Button Grid.Row="0" Content="保存本地" Margin="100,0,10,0" HorizontalAlignment="Right" VerticalAlignment="Center" Click="Button_Click" Cursor="Hand"/> | |||
<Label HorizontalAlignment="Left" VerticalAlignment="Center" x:Name="label_currentver" Margin="10,0,0,0">1.0</Label> | |||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto"> | |||
<TextBox FontSize="16" x:Name="memoEdit1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" UseLayoutRounding="True" AcceptsReturn="True" TextWrapping="Wrap" UndoLimit="200" Height="{Binding Height, ElementName=border}" /> | |||
@@ -94,7 +94,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Juicer", "BP | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkT_HQ", "BPASmartClient.MorkT_HQ\BPASmartClient.MorkT_HQ.csproj", "{00C17D87-A323-4A97-BC21-7039E55614DE}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DosingSystem", "DosingSystem\DosingSystem.csproj", "{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DosingSystem", "DosingSystem\DosingSystem.csproj", "{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MorkTJuicer", "BPASmartClient.MorkTJuicer\BPASmartClient.MorkTJuicer.csproj", "{724087A3-E7E7-4494-B844-414FF5CD1D40}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
@@ -870,6 +872,26 @@ Global | |||
{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}.Release|x64.Build.0 = Release|Any CPU | |||
{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}.Release|x86.ActiveCfg = Release|Any CPU | |||
{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}.Release|x86.Build.0 = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|ARM.Build.0 = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|ARM64.Build.0 = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|x64.Build.0 = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Debug|x86.Build.0 = Debug|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|ARM.ActiveCfg = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|ARM.Build.0 = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|ARM64.ActiveCfg = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|ARM64.Build.0 = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x64.ActiveCfg = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x64.Build.0 = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.ActiveCfg = Release|Any CPU | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
@@ -913,6 +935,7 @@ Global | |||
{C28A88B1-E449-484C-AC67-B5038FF2CA79} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | |||
{00C17D87-A323-4A97-BC21-7039E55614DE} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||
{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | |||
{724087A3-E7E7-4494-B844-414FF5CD1D40} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | |||