@@ -8,7 +8,7 @@ | |||
<ItemGroup> | |||
<PackageReference Include="BPA.ApolloClient" Version="1.0.12" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" /> | |||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0" /> | |||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0" /> | |||
@@ -95,7 +95,7 @@ namespace BPASmartClient.Business | |||
#region 获取物料数据 | |||
string result = string.Empty; | |||
for (int i = 0; i < 2; i++) | |||
for (int i = 0; i < 3; i++) | |||
{ | |||
try | |||
{ | |||
@@ -396,7 +396,7 @@ | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Helper" Version="1.0.17" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="MahApps.Metro.IconPacks.FontAwesome" Version="4.11.0" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
</ItemGroup> | |||
@@ -7,7 +7,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
@@ -8,7 +8,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Message" Version="1.0.60" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
</ItemGroup> | |||
@@ -8,7 +8,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Message" Version="1.0.58" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | |||
</ItemGroup> | |||
@@ -348,8 +348,8 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||
if (modbusTcp.Connected) | |||
{ | |||
modbusTcp.SetReal(DeviceAddress.WeightSet, Value);//写入配方量 | |||
string returnValue = modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 | |||
if (returnValue.Substring(0, 2) == "成功") | |||
bool returnValue = modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 | |||
if (returnValue) | |||
{ | |||
MessageLog.GetInstance.ShowRunLog("发送成功" + returnValue); | |||
} | |||
@@ -26,6 +26,12 @@ namespace BPASmartClient.MilkWithTea.View | |||
Border ultUE; | |||
Popup mypopup; | |||
ListBoxItem OldItem; | |||
bool isDown = false; | |||
/// <summary> | |||
/// 当前拖拽子控件Item | |||
/// </summary> | |||
private ListBoxItem ChildListBoxItem; | |||
public RecipeConfige() | |||
{ | |||
@@ -102,60 +108,141 @@ namespace BPASmartClient.MilkWithTea.View | |||
private void listview1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) | |||
{ | |||
var pos = e.GetPosition(listview1); | |||
HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||
OldItem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||
if(OldItem != null) | |||
try | |||
{ | |||
if (e.Source is Border) | |||
if (isDown) | |||
{ | |||
isDown = false; | |||
return; | |||
} | |||
var pos = e.GetPosition(listview1); | |||
HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||
if (result == null) return; | |||
OldItem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||
if (OldItem != null) | |||
{ | |||
ultUE = (Border)e.Source; | |||
ultUE.CaptureMouse(); | |||
ultUE.Visibility = Visibility.Collapsed; | |||
CloneVisual(ultUE, e); | |||
if (e.Source is Border) | |||
{ | |||
ultUE = (Border)e.Source; | |||
ultUE.CaptureMouse(); | |||
ChildListBoxItem = Utils.FindVisualParent<ListBoxItem>(VisualTreeHelper.HitTest(ultUE, e.GetPosition(ultUE)).VisualHit); | |||
CloneVisual(ultUE, e); | |||
isDown = true; | |||
} | |||
} | |||
} | |||
catch (Exception) | |||
{ | |||
throw; | |||
} | |||
} | |||
private void listview1_MouseMove(object sender, MouseEventArgs e) | |||
{ | |||
Point ptLeftUp = new Point(0, 0); | |||
Point ptRightDown = new Point(this.ActualWidth, this.ActualHeight); | |||
ptLeftUp = listview1.PointToScreen(ptLeftUp); | |||
ptRightDown = listview1.PointToScreen(ptRightDown); | |||
double y = e.GetPosition(listview1).Y; | |||
double x = e.GetPosition(listview1).X; | |||
if (mypopup != null) | |||
{ | |||
mypopup.HorizontalOffset = ptLeftUp.X + x - ((FrameworkElement)ultUE).ActualWidth / 2; | |||
mypopup.VerticalOffset = ptLeftUp.Y + y - ((FrameworkElement)ultUE).ActualHeight / 2; | |||
} | |||
if (isDown == false) return; | |||
if (e.LeftButton != MouseButtonState.Pressed) | |||
listview1_MouseLeftButtonUp(null,null); | |||
Point ptLeftUp = new Point(0, 0); | |||
Point ptRightDown = new Point(this.ActualWidth, this.ActualHeight); | |||
ptLeftUp = listview1.PointToScreen(ptLeftUp); | |||
ptRightDown = listview1.PointToScreen(ptRightDown); | |||
double y = e.GetPosition(listview1).Y; | |||
double x = e.GetPosition(listview1).X; | |||
if (mypopup != null) | |||
{ | |||
mypopup.HorizontalOffset = ptLeftUp.X + x - ((FrameworkElement)ultUE).ActualWidth / 2; | |||
mypopup.VerticalOffset = ptLeftUp.Y + y - ((FrameworkElement)ultUE).ActualHeight / 2; | |||
} | |||
MoveListBoxStyle(e, true); | |||
} | |||
private void listview1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) | |||
{ | |||
if(mypopup != null) | |||
//鼠标未按下返回 | |||
if (!isDown) return; | |||
isDown = false; | |||
if (mypopup != null) | |||
{ | |||
mypopup.IsOpen = false; | |||
mypopup = null; | |||
} | |||
if (OldItem == null) return; | |||
var pos = e.GetPosition(listview1); | |||
HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||
if(result == null) return; | |||
var Newitem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||
if (Newitem == null) return; | |||
if (OldItem == Newitem) return; | |||
int iold = listview1.Items.IndexOf((LocalMaterail)OldItem.DataContext); | |||
int inew = listview1.Items.IndexOf((LocalMaterail)Newitem.DataContext); | |||
RecipeConfigeViewModel.Materails.Move(iold,inew); | |||
MoveListBoxStyle(e, false); | |||
//if (OldItem == null) return; | |||
//var pos = e.GetPosition(listview1); | |||
//HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||
//if(result == null) return; | |||
//var Newitem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||
//if (Newitem == null) return; | |||
//if (OldItem == Newitem) return; | |||
//int iold = listview1.Items.IndexOf((LocalMaterail)OldItem.DataContext); | |||
//int inew = listview1.Items.IndexOf((LocalMaterail)Newitem.DataContext); | |||
//RecipeConfigeViewModel.Materails.Move(iold,inew); | |||
} | |||
/// <summary> | |||
/// 移动效果 | |||
/// </summary> | |||
/// <param name="boxItem"></param> | |||
private void MoveListBoxStyle(MouseEventArgs e, bool isBool) | |||
{ | |||
try | |||
{ | |||
if (isBool)//为真,根据鼠标位置设置行透明度和显示状态 | |||
{ | |||
//移动到某行减轻某行 暗黑 | |||
foreach (ListBoxItem item in Utils.FindVisualChildren<ListBoxItem>(listview1)) | |||
{ | |||
if (item != ChildListBoxItem)//这就是其他控件 | |||
{ | |||
double item_width = item.ActualWidth; //当前行宽 | |||
double item_height = item.ActualHeight; //当前行高 | |||
double item_x = e.GetPosition(item).X; //鼠标相对当前行X位移 | |||
double item_y = e.GetPosition(item).Y; //鼠标相对当前行Y位移 | |||
if (item_y <= item_height && item_y > 0 && item_x > 0 && item_x <= item_width)//鼠标进入哪一行,则将那一行变灰 | |||
{ | |||
item.Opacity = 0.5; | |||
int lao_index = RecipeConfigeViewModel.Materails.IndexOf(item.Content as LocalMaterail); | |||
int new_index = RecipeConfigeViewModel.Materails.IndexOf(ChildListBoxItem.Content as LocalMaterail); | |||
RecipeConfigeViewModel.Materails.Move(lao_index, new_index); | |||
} | |||
else //鼠标没在哪一行,则保持原状 | |||
{ | |||
item.Opacity = 1; | |||
} | |||
} | |||
else | |||
{ | |||
item.Visibility = Visibility.Hidden; | |||
} | |||
} | |||
} | |||
else//为假 恢复所有行透明度和显示状态 | |||
{ | |||
//移动到某行减轻某行 暗黑 | |||
foreach (ListBoxItem item in Utils.FindVisualChildren<ListBoxItem>(listview1)) | |||
{ | |||
item.Opacity = 1; | |||
item.Visibility = Visibility.Visible; | |||
} | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
} | |||
} | |||
} | |||
internal static class Utils | |||
{ | |||
//根据子元素查找父元素 | |||
@@ -170,5 +257,31 @@ namespace BPASmartClient.MilkWithTea.View | |||
} | |||
return null; | |||
} | |||
/// <summary> | |||
/// 查询子控件 | |||
/// </summary> | |||
/// <typeparam name="T"></typeparam> | |||
/// <param name="obj"></param> | |||
/// <returns></returns> | |||
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject | |||
{ | |||
if (depObj != null) | |||
{ | |||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) | |||
{ | |||
DependencyObject child = VisualTreeHelper.GetChild(depObj, i); | |||
if (child != null && child is T) | |||
{ | |||
yield return (T)child; | |||
} | |||
foreach (T childOfChild in FindVisualChildren<T>(child)) | |||
{ | |||
yield return childOfChild; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.Message; | |||
//using BPASmartClient.Message; | |||
using NModbus; | |||
using System; | |||
@@ -55,7 +56,7 @@ namespace BPASmartClient.Modbus | |||
IPAdress = ip; | |||
Port = port; | |||
modbusFactory = new ModbusFactory(); | |||
Connect(); | |||
Connect(); | |||
if (Connected) | |||
{ | |||
master.Transport.ReadTimeout = 2000;//读取超时时间 | |||
@@ -131,6 +132,18 @@ namespace BPASmartClient.Modbus | |||
} | |||
} | |||
} | |||
if (address.ToUpper().Contains("LB") && address.Length >= 3) | |||
{ | |||
var res = address.Substring(2); | |||
if (res != null && res.Length > 0) | |||
{ | |||
if(int.TryParse(res, out int firstAddress)) | |||
{ | |||
return firstAddress; | |||
} | |||
} | |||
} | |||
else if (address.ToUpper().Contains("VW") && address.Length >= 3) | |||
{ | |||
var res = address.Substring(2); | |||
@@ -242,6 +255,11 @@ namespace BPASmartClient.Modbus | |||
commandType = CommandType.Inputs; | |||
return master.ReadInputs(slaveAddress, startAddress, len); | |||
} | |||
else if (address.ToUpper().Contains("LB")) | |||
{ | |||
commandType = CommandType.Coils; | |||
return master.ReadCoils(slaveAddress, startAddress, len); | |||
} | |||
} | |||
catch (Exception ex) | |||
@@ -306,6 +324,14 @@ namespace BPASmartClient.Modbus | |||
else if (value is bool[] boolsValue) | |||
master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | |||
} | |||
else if(address.ToUpper().Contains("LB")) | |||
{ | |||
commandType = CommandType.Coils; | |||
if (value is bool boolValue) | |||
master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | |||
else if (value is bool[] boolsValue) | |||
master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | |||
} | |||
else if (address.ToUpper().Contains("VW") || address.ToUpper().Contains("LW") || address.ToUpper().Contains("D")) | |||
{ | |||
commandType = CommandType.HoldingRegisters; | |||
@@ -17,7 +17,7 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
</ItemGroup> | |||
@@ -10,10 +10,11 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Models" Version="1.0.13" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | |||
</ItemGroup> | |||
@@ -10,100 +10,106 @@ namespace BPASmartClient.MorkF | |||
{ | |||
internal class GVL_MorkF | |||
{ | |||
/// <summary> | |||
/// 初始化完成状态 | |||
/// </summary> | |||
public bool InitialComplete { get; set; } | |||
/// <summary> | |||
/// 供盘 模组状态 忙碌1 空闲0 | |||
/// </summary> | |||
public bool ProvidePlateModule { get; set; } | |||
/// <summary> | |||
/// 供盘完成状态 | |||
/// </summary> | |||
public bool ProvidePlateComplete { get; set; } | |||
/// <summary> | |||
/// 清洗模组1状态 忙碌1 空闲0 | |||
/// 小炒菜单集合 | |||
/// </summary> | |||
public bool CleanModule { get; set; } | |||
public List<StirFryGoods> LocalstirFryGoods =new List<StirFryGoods>(); | |||
/// <summary> | |||
/// 清洗模组2状态 忙碌1 空闲0 | |||
/// 小炒队列 | |||
/// </summary> | |||
public bool SecondCleanModule { get; set; } | |||
/// <summary> | |||
/// 清洗模组1完成状态 | |||
/// </summary> | |||
public bool CleanComplete { get; set; } | |||
public ConcurrentQueue<OrderLocInfo> StirFryGoodsQuenes = new ConcurrentQueue<OrderLocInfo>(); | |||
// <summary> | |||
/// 清洗模组2完成状态 | |||
/// </summary> | |||
public bool SecondCleanComplete { get; set; } | |||
/// <summary> | |||
/// 锅灶1状态 忙碌1 空闲0 | |||
/// </summary> | |||
public bool KitchenOneStatus { get; set; } | |||
public bool IsAuto = true; | |||
#region 炒锅1 | |||
/// <summary> | |||
/// 锅灶1状态 忙碌1 空闲0 | |||
/// 炒锅自动模式 | |||
/// </summary> | |||
public bool KitchenSecondStatus { get; set; } | |||
public bool AutoMode { get; set; } | |||
/// <summary> | |||
/// 锅灶1注油完成状态 | |||
/// 炒锅1初始化完成 | |||
/// </summary> | |||
public bool FallOilComplete { get; set; } | |||
public bool FryPot1_InitialComplete { get; set; } | |||
/// <summary> | |||
/// 锅灶2注油完成状态 | |||
/// 炒锅1允许HBOT放盒 | |||
/// </summary> | |||
public bool SecondOilComplete { get; set; } | |||
public bool FryPot1_HOBTPut { get; set; } | |||
/// <summary> | |||
/// 锅灶1翻转机上升完成状态 | |||
/// 炒锅1允许HBOT取盒 | |||
/// </summary> | |||
public bool TurnMachineUpComplete { get; set; } | |||
public bool FryPot1_HOBTGet { get; set; } | |||
/// <summary> | |||
/// 锅灶2翻转机上升完成状态 | |||
/// 往炒锅倒菜完成 | |||
/// </summary> | |||
public bool SecondTurnMachineUpComplete { get; set; } | |||
public bool FryPot1_MaterialIntoPot { get; set; } | |||
/// <summary> | |||
/// 锅灶1翻转机下降完成状态 | |||
/// 出餐完成 | |||
/// </summary> | |||
public bool TurnMachineDownComplete { get; set; } | |||
public bool OutFoodCompelete { get; set; } | |||
/// <summary> | |||
/// 锅灶2翻转机下降完成状态 | |||
/// 允许出餐倒菜 | |||
/// </summary> | |||
public bool SecondTurnMachineDownComplete { get; set; } | |||
public bool CanOutFood { get; set; } | |||
/// <summary> | |||
/// 料仓旋转到位状态 | |||
/// 窗口取餐完成 | |||
/// </summary> | |||
public bool MaterialArriveComplete { get; set; } | |||
public bool GetFoodCompelete { set; get; } | |||
/// <summary> | |||
/// 机器人空闲状态 1:忙碌 0:空闲 | |||
/// 允许倒洗锅水 | |||
/// </summary> | |||
public bool RoobotIdle { get; set; } | |||
public bool CanOutPotWashingWater { get; set; } | |||
/// <summary> | |||
/// 放锅至灶台1完成状态 | |||
/// 搅拌臂在原点位 | |||
/// </summary> | |||
public bool PutPotToKitchenComlete { get; set; } | |||
public bool ArmOnOrigin { get; set; } | |||
/// <summary> | |||
/// 放锅至灶台2完成状态 | |||
/// 搅拌臂在工作位 | |||
/// </summary> | |||
public bool PutPotToSecondKitchenComlete { get; set; } | |||
public bool ArmOnWorking { get; set; } | |||
/// <summary> | |||
/// 机器人取料完成状态 | |||
/// 锅在原点位 | |||
/// </summary> | |||
public bool TakeMaterialComplete { get; set; } | |||
/// <summary> | |||
/// 机器人放锅至清洗台1完成状态 | |||
/// </summary> | |||
public bool PlaceRinseTableComplete { get; set; } | |||
/// <summary> | |||
/// 机器人放锅至清洗台2完成状态 | |||
/// </summary> | |||
public bool PlaceRinseSecondTableComplete { get; set; } | |||
public bool PotOnOrigin { get; set; } | |||
#endregion | |||
#region 调料通道 | |||
public bool PassWay1_1Compelete { get; set; } | |||
public bool PassWay1_2Compelete { get; set; } | |||
public bool PassWay1_3Compelete { get; set; } | |||
public bool PassWay1_4Compelete { get; set; } | |||
public bool PassWay1_5Compelete { get; set; } | |||
public bool PassWay1_6Compelete { get; set; } | |||
public bool PassWay1_7Compelete { get; set; } | |||
public bool PassWay1_8Compelete { get; set; } | |||
public bool PassWay1_9Compelete { get; set; } | |||
public bool PassWay1_10Compelete { get; set; } | |||
public bool PassWay1_11Compelete { get; set; } | |||
public bool PassWay1_12Compelete { get; set; } | |||
public bool PassWay1_13Compelete { get; set; } | |||
public bool PassWay1_14Compelete { get; set; } | |||
public Dictionary<int, bool> PassWay1_Compelete = new Dictionary<int, bool>(); | |||
#endregion | |||
public GVL_MorkF() | |||
{ | |||
PassWay1_Compelete.Add(1,PassWay1_1Compelete); | |||
PassWay1_Compelete.Add(2,PassWay1_2Compelete); | |||
PassWay1_Compelete.Add(3,PassWay1_3Compelete); | |||
PassWay1_Compelete.Add(4,PassWay1_4Compelete); | |||
PassWay1_Compelete.Add(5,PassWay1_5Compelete); | |||
PassWay1_Compelete.Add(6,PassWay1_6Compelete); | |||
PassWay1_Compelete.Add(7,PassWay1_7Compelete); | |||
PassWay1_Compelete.Add(8,PassWay1_8Compelete); | |||
PassWay1_Compelete.Add(9,PassWay1_9Compelete); | |||
PassWay1_Compelete.Add(10,PassWay1_10Compelete); | |||
PassWay1_Compelete.Add(11,PassWay1_11Compelete); | |||
PassWay1_Compelete.Add(12,PassWay1_12Compelete); | |||
PassWay1_Compelete.Add(13,PassWay1_13Compelete); | |||
PassWay1_Compelete.Add(14,PassWay1_14Compelete); | |||
} | |||
/// <summary> | |||
/// 订单取配料队列 | |||
/// </summary> | |||
@@ -112,185 +118,12 @@ namespace BPASmartClient.MorkF | |||
/// 订单供盘队列 | |||
/// </summary> | |||
public ConcurrentQueue<OrderLocInfo> TakePlateQueue = new ConcurrentQueue<OrderLocInfo>(); | |||
/// <summary> | |||
/// 存放主流程当前订单唯一ID | |||
/// </summary> | |||
public string MainCurrentOrderId { get; set; } | |||
/// <summary> | |||
/// 存放辅流程当前订单唯一ID | |||
/// </summary> | |||
public string MinorCurrentOrderId { get; set; } | |||
/// <summary> | |||
/// PLC上升沿初始化触发信号 | |||
/// </summary> | |||
public bool DevicDataInite { set; get; } | |||
/// <summary> | |||
/// 取素菜A料完成 | |||
/// </summary> | |||
public bool TakeVegBurdenAComplete { get; set; } | |||
/// <summary> | |||
/// 取荤菜A料完成 | |||
/// </summary> | |||
public bool TakeMeatBurdenAComplete { get; set; } | |||
/// <summary> | |||
/// 所有A料下锅完成 | |||
/// </summary> | |||
public bool TakeAllBurdenAComplete { get; set; } | |||
/// <summary> | |||
/// 取素菜B料完成 | |||
/// </summary> | |||
public bool TakeVegBurdenBComplete { get; set; } | |||
/// <summary> | |||
/// 所有B料下锅完成 | |||
/// </summary> | |||
public bool TakeAllBurdenBComplete { get; set; } | |||
/// <summary> | |||
/// 取C料完成 | |||
/// </summary> | |||
public bool TakeBurdenCComplete { get; set; } | |||
/// <summary> | |||
/// 除C料外,所有配料下锅标志 | |||
/// </summary> | |||
public bool TakeAllBurdenComplete { get; set; } | |||
/// <summary> | |||
/// 锅1到位 true:到位 false:未到位 | |||
/// </summary> | |||
public bool PotInPlace { get; set; } | |||
/// <summary> | |||
/// 锅2到位 true:到位 false:未到位 | |||
/// </summary> | |||
public bool SecondPotInPlace { get; set; } | |||
/// <summary> | |||
/// true:烹饪完成 | |||
/// </summary> | |||
public bool CookingComplete { get; set; } | |||
/// <summary> | |||
/// 注油完成 | |||
/// </summary> | |||
public bool AddOilComplete { get; set; } | |||
/// <summary> | |||
/// 1号锅倒料完成 | |||
/// </summary> | |||
public bool FallMaterialComplete { get; set; } | |||
/// <summary> | |||
/// 2号锅倒料完成 | |||
/// </summary> | |||
public bool SecondFallMaterialComplete { get; set; } | |||
/// <summary> | |||
/// 供盘互锁 | |||
/// </summary> | |||
public bool TakePlateLock { get; set; } | |||
/// <summary> | |||
/// 取锅互锁 | |||
/// </summary> | |||
public bool TakePotLock { get; set; } | |||
/// <summary> | |||
/// 取素菜A料互锁 | |||
/// </summary> | |||
public bool TakeVegALock { get; set; } | |||
/// <summary> | |||
/// 取荤菜A料互锁 | |||
/// </summary> | |||
public bool TakeMeatALock { get; set; } | |||
/// <summary> | |||
/// 取素菜B料互锁 | |||
/// </summary> | |||
public bool TakeVegBLock { get; set; } | |||
/// <summary> | |||
/// 取C料互锁 | |||
/// </summary> | |||
public bool TakeBurdenCLcok { get; set; } | |||
/// <summary> | |||
/// 烹饪任务互锁 | |||
/// </summary> | |||
public bool CookingLock { get; set; } | |||
/// <summary> | |||
/// 转台互锁 | |||
/// </summary> | |||
public bool TurnTableLock { get; set; } | |||
/// <summary> | |||
/// 主流程自锁 | |||
/// </summary> | |||
public bool MainProcessExcuteLock { get; set; } | |||
/// <summary> | |||
/// 辅流程自锁 | |||
/// </summary> | |||
public bool MinorProcessExcuteLock { get; set; } | |||
/// <summary> | |||
/// 开始取料标志 | |||
/// </summary> | |||
public bool AllowTakeMaterial { get; set; } | |||
/// <summary> | |||
/// 主流程订单完成标志 | |||
/// </summary> | |||
public bool MainOutMealComplete { get; set; } | |||
/// <summary> | |||
/// 辅流程订单完成标志 | |||
/// </summary> | |||
public bool MinorOutMealComplete { get; set; } | |||
/// <summary> | |||
/// 主流程订单取料结束 | |||
/// </summary> | |||
public bool MainOrderMaterialCom { get; set; } | |||
/// <summary> | |||
/// 主流程是否取料判断 | |||
/// </summary> | |||
public bool MainHasTakeMaterial { get; set; } | |||
/// <summary> | |||
/// 主流程等待 | |||
/// </summary> | |||
public bool MainProcessWait { get; set; } | |||
/// <summary> | |||
/// 辅流程等待 | |||
/// </summary> | |||
public bool MinorProcessWait { get; set; } | |||
/// <summary> | |||
/// 辅流程订单取料结束 | |||
/// </summary> | |||
public bool MinorOrderMaterialCom { get; set; } | |||
/// <summary> | |||
/// 辅流程是否取料判断 | |||
/// </summary> | |||
public bool MinorHasTakeMaterial { get; set; } | |||
/// <summary> | |||
/// 存储订单对应流程对象 | |||
/// </summary> | |||
public List<StirFryBom> listStirBom=new List<StirFryBom>(); | |||
/// <summary> | |||
/// 下配料次数 | |||
/// </summary> | |||
public int MaterialCount { get; set; } | |||
/// <summary> | |||
/// 允许执行辅流程标识 | |||
/// </summary> | |||
public bool MinorProcessFlag { get; set; } | |||
/// <summary> | |||
/// 辅流程执行状态 | |||
/// </summary> | |||
public bool MinorProessStatus { get; set; } | |||
/// <summary> | |||
/// 允许执行主流程标识 | |||
/// </summary> | |||
public bool MainProcessFlag { get; set; } = true; | |||
/// <summary> | |||
/// 主流程执行状态 | |||
/// </summary> | |||
public bool MainProcessStatus { get; set; } = true; | |||
/// <summary> | |||
/// 当前放锅位置 1:1号锅 2: 2号锅 | |||
/// </summary> | |||
public int CurrentPutPotLoc { get; set; } | |||
/// <summary> | |||
/// 主流程所执行的锅位置 | |||
/// </summary> | |||
public int MainProcessPotLoc { get; set; } | |||
/// <summary> | |||
/// 辅流程所执行的锅位置 | |||
/// </summary> | |||
public int MinorProcessPotLoc { get; set; } | |||
#region 单口锅逻辑变量 | |||
@@ -303,39 +136,39 @@ namespace BPASmartClient.MorkF | |||
public Dictionary<int,string> StartPassWay { get; set; } = new Dictionary<int, string>() | |||
{ | |||
{1,"M3.0" }, | |||
{2,"M3.1" }, | |||
{3,"M3.2" }, | |||
{4,"M3.3" }, | |||
{5,"M3.4" }, | |||
{6,"M3.5" }, | |||
{7,"M3.6" }, | |||
{8,"M3.7" }, | |||
{9,"M4.0" }, | |||
{10,"M4.1" }, | |||
{11,"M4.2" }, | |||
{12,"M4.3" }, | |||
{13,"M4.4" }, | |||
{13,"M4.5" }, | |||
{1,"LB24" }, | |||
{2,"LB25" }, | |||
{3,"LB26" }, | |||
{4,"LB27" }, | |||
{5,"LB28" }, | |||
{6,"LB29" }, | |||
{7,"LB30" }, | |||
{8,"LB31" }, | |||
{9,"LB32" }, | |||
{10,"LB33" }, | |||
{11,"LB34" }, | |||
{12,"LB35" }, | |||
{13,"LB36" }, | |||
{14,"LB37" }, | |||
}; | |||
public Dictionary<int, string> PassWayValue { get; set; } = new Dictionary<int, string>() | |||
{ | |||
{1,"VW200" }, | |||
{2,"VW202" }, | |||
{3,"VW204" }, | |||
{4,"VW206" }, | |||
{5,"VW208" }, | |||
{6,"VW210" }, | |||
{7,"VW212" }, | |||
{8,"VW214" }, | |||
{9,"VW216" }, | |||
{10,"VW218" }, | |||
{11,"VW220" }, | |||
{12,"VW222" }, | |||
{13,"VW224" }, | |||
{13,"VW226" }, | |||
{1,"LW0" }, | |||
{2,"LW1" }, | |||
{3,"LW2" }, | |||
{4,"LW3" }, | |||
{5,"LW4" }, | |||
{6,"LW5" }, | |||
{7,"LW6" }, | |||
{8,"LW7" }, | |||
{9,"LW8" }, | |||
{10,"LW9" }, | |||
{11,"LW10" }, | |||
{12,"LW11" }, | |||
{13,"LW12" }, | |||
{14,"LW13" }, | |||
}; | |||
} | |||
} | |||
@@ -0,0 +1,14 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
using BPA.Message; | |||
namespace BPASmartClient.MorkF.Model | |||
{ | |||
public class StirFryPushMessages | |||
{ | |||
public StirFryPushMessage pushMessage = new StirFryPushMessage(); | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
using System; | |||
using BPA.Models; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
@@ -9,8 +10,9 @@ namespace BPASmartClient.MorkF | |||
internal class OrderLocInfo | |||
{ | |||
public string SuborderId { get; set; } | |||
public List<int> MaterialLoc { get; set; } = new List<int>();//物料A位置 | |||
public List<PotActions> StirPotActions = new List<PotActions>(); | |||
public ushort RecipeNumber { get; set; } | |||
public int BatchingId { get; set; } | |||
public string GoodName { get; set; } | |||
} | |||
} |
@@ -4,8 +4,12 @@ | |||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||
xmlns:local="clr-namespace:BPASmartClient.MorkF.View" | |||
xmlns:vm="clr-namespace:BPASmartClient.MorkF.ViewModel" | |||
mc:Ignorable="d" | |||
d:DesignHeight="600" d:DesignWidth="1300"> | |||
d:DesignHeight="900" d:DesignWidth="1300"> | |||
<UserControl.DataContext> | |||
<vm:DebugViewModel/> | |||
</UserControl.DataContext> | |||
<UserControl.Resources> | |||
<ResourceDictionary> | |||
<ResourceDictionary.MergedDictionaries> | |||
@@ -16,38 +20,98 @@ | |||
</UserControl.Resources> | |||
<Grid> | |||
<Grid.RowDefinitions> | |||
<RowDefinition Height="120" ></RowDefinition> | |||
<RowDefinition Height="100"></RowDefinition> | |||
<RowDefinition Height="162" ></RowDefinition> | |||
<RowDefinition Height="285"></RowDefinition> | |||
<RowDefinition></RowDefinition> | |||
</Grid.RowDefinitions> | |||
<GroupBox Header="设备控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="120"> | |||
<WrapPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="0,5,0,0"> | |||
<Button Content="初始化" Command="{Binding PlcInite}" Margin="10,0,10,0" Cursor="Hand"></Button> | |||
<Button Content="模拟订单" Command="{Binding SimulateOrder}" Margin="10,0,10,0" Cursor="Hand"></Button> | |||
<Button Content="自动模式" Command="{ Binding AutoModel}" Margin="10,0,10,0" Cursor="Hand"></Button> | |||
<Button Content="手动模式" Command="{Binding ManualModel}" Margin="10,0,10,0"></Button> | |||
<Button Content="打开抽风" Command="{Binding OpenExhaust}" Margin="10,0,10,0"></Button> | |||
<Button Content="关闭抽风" Command="{Binding CloaseExhaust}" Margin="10,0,10,0"></Button> | |||
<Button Content="料仓1" Command="{Binding MaterialOne}" Margin="10,0,10,0"></Button> | |||
<Button Content="料仓2" Command="{Binding MaterialTwo}" Margin="10,0,10,0"></Button> | |||
<Button Content="料仓3" Command="{Binding MaterialThree}" Margin="10,0,10,0"></Button> | |||
<Button Content="料仓4" Command="{Binding MaterialFour}" Margin="10,0,10,0"></Button> | |||
<Button Content="料仓5" Command="{Binding MaterialFive}" Margin="10,0,10,0"></Button> | |||
<Button Content="供盘" Command="{Binding OutPlate}" Margin="10,0,10,0"></Button> | |||
<Button Content="清洗模组1启动" Command="{Binding StartQXOne}" Margin="10,0,10,0"></Button> | |||
<Button Content="清洗模组2启动" Command="{Binding StartQXTwo}" Margin="10,0,10,0" Cursor="Hand"></Button> | |||
<CheckBox Name="checkValue" Content="运行模拟订单程序" Margin="10,10,10,0" IsChecked="{Binding SimOrderEnable}"></CheckBox> | |||
</WrapPanel> | |||
<GroupBox Header="设备控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" > | |||
<Grid Height="120"> | |||
<Grid.RowDefinitions> | |||
<RowDefinition Height="1*"/> | |||
<RowDefinition Height="2*"/> | |||
</Grid.RowDefinitions> | |||
<WrapPanel Orientation="Horizontal"> | |||
<Button Content="炒锅初始化" Command="{Binding PlcInite}" Cursor="Hand"/> | |||
<Button Content="炒锅1复位" Command="{Binding Plc1Reset}" Cursor="Hand"/> | |||
</WrapPanel> | |||
<WrapPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,0,-37" RenderTransformOrigin="0.503,0.715"> | |||
<Button x:Name="checkValue" Content="炒锅1模拟" Command="{Binding Pot1SimOrder}" Margin="10,0"/> | |||
<TextBlock Text="模拟参数--" Margin="5,0"/> | |||
<TextBlock Text="油加热时间:" Margin="5,0"/> | |||
<TextBox Text="{Binding OilTime}" Width="60" Margin="5,0"/> | |||
<TextBlock Text="秒" Margin="5,0"/> | |||
<TextBlock Text="油加热挡位" Margin="5,0"/> | |||
<TextBox Text="{Binding OilFirGear}" Width="60" Margin="5,0"/> | |||
<TextBlock Text="油搅拌挡位" Margin="5,0"/> | |||
<TextBox Text="{Binding OilStrGear}" Width="60" Margin="5,0,20,0"/> | |||
<TextBlock Text="菜品1加热时间:" Margin="5,0"/> | |||
<TextBox Text="{Binding Food1Time}" Width="60" Margin="5,0"/> | |||
<TextBlock Text="秒" Margin="20,0,80,0"/> | |||
<TextBlock Text="菜品1加热挡位" Margin="5,0"/> | |||
<TextBox Text="{Binding Food1FirGear}" Width="60" Margin="5,20"/> | |||
<TextBlock Text="菜品1搅拌挡位" Margin="5,20"/> | |||
<TextBox Text="{Binding Food1StrGear}" Width="60" Margin="5,0,20,0"/> | |||
<TextBlock Text="菜品2加热时间:" Margin="5,0"/> | |||
<TextBox Text="{Binding Food2Time}" Width="60" Margin="5,0"/> | |||
<TextBlock Text="秒" Margin="20,0,80,0"/> | |||
<TextBlock Text="菜品2加热挡位" Margin="5,0"/> | |||
<TextBox Text="{Binding Food2FirGear}" Width="60" Margin="5,20"/> | |||
<TextBlock Text="菜品2搅拌挡位" Margin="5,20"/> | |||
<TextBox Text="{Binding Food2StrGear}" Width="60" Margin="5,0,20,0"/> | |||
</WrapPanel> | |||
</Grid> | |||
</GroupBox> | |||
<GroupBox Header="菜品选择" FontSize="15" Foreground="Aqua" Grid.Row="1" Margin="0,0,0,40" VerticalAlignment="Top" Height="100"> | |||
<WrapPanel Orientation="Horizontal" Height="52" VerticalAlignment="Center" > | |||
<Button Content="手撕包菜" Command="{Binding ShreddCabbage}" Margin="10,0,10,0"></Button> | |||
<Button Content="盐煎肉" Command="{Binding FryPork}" Margin="10,0,10,0"></Button> | |||
<Button Content="酱烧杏鲍菇" Command="{Binding XingBaoGu}" Margin="10,0,10,0"></Button> | |||
</WrapPanel> | |||
<GroupBox Header="菜品选择" FontSize="15" Foreground="Aqua" Grid.Row="1" VerticalAlignment="Center" Height="190" > | |||
<Grid > | |||
<Grid.RowDefinitions> | |||
<RowDefinition Height="*"/> | |||
<RowDefinition Height="*"/> | |||
<RowDefinition Height="*"/> | |||
</Grid.RowDefinitions> | |||
<WrapPanel Orientation="Horizontal" > | |||
<TextBlock Text="取料手臂实时位置" Margin="0,0,10,0"/> | |||
<TextBlock Text="X:" Margin="5,0"/> | |||
<TextBox Text="{Binding RealX}" Width="70" Margin="5,0" VerticalAlignment="Top" IsReadOnly="True"/> | |||
<TextBlock Text="Y:" Margin="5,0"/> | |||
<TextBox Text="{Binding RealY}" Width="70" Margin="5,0" VerticalAlignment="Top" IsReadOnly="True"/> | |||
<TextBlock Text="{Binding PawPosition}" Margin="10,0,5,0"/> | |||
<Button Content="菜品库初始化" Margin="10,0,5,0" Command="{Binding FoodLibInit}"/> | |||
<Button Content="电磁阀启动" Margin="10,0,5,0" Command="{Binding StartElectromagnetism}"/> | |||
<Button Content="电磁阀停止" Margin="10,0,5,0" Command="{Binding StopElectromagnetism}"/> | |||
</WrapPanel> | |||
<WrapPanel Grid.Row="1" Orientation="Horizontal" > | |||
<TextBlock Text="取料手臂设定位置" Margin="0,0,10,0"/> | |||
<TextBlock Text="X:" Margin="5,0"/> | |||
<TextBox Text="{Binding SettingX}" Width="70" Margin="5,0" VerticalAlignment="Center" /> | |||
<TextBlock Text="Y:" Margin="5,0"/> | |||
<TextBox Text="{Binding SettingY}" Width="70" Margin="5,0" VerticalAlignment="Center" /> | |||
<Button Content="移动" Command="{Binding SetArmPosition}" Margin="5,0,10,0" Cursor="Hand"/> | |||
<TextBlock Text="移动速度:" Margin="5,0"/> | |||
<TextBox Text="{Binding MoveSpeed}" Width="70" Margin="5,0" VerticalAlignment="Center" /> | |||
<Button Content="设定" Command="{Binding SetSpeed}" Cursor="Hand" Margin="5,0,10,0" /> | |||
<Button Content="感应器1测距" Margin="5,0" Command="{Binding GetDistance_1}"/> | |||
<TextBox Text="{Binding SensingDistance_1}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||
<Button Content="感应器2测距" Margin="5,0" Command="{Binding GetDistance_2}"/> | |||
<TextBox Text="{Binding SensingDistance_2}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||
<Button Content="感应器3测距" Margin="5,0" Command="{Binding GetDistance_3}"/> | |||
<TextBox Text="{Binding SensingDistance_3}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||
</WrapPanel> | |||
<WrapPanel Grid.Row="2" Orientation="Horizontal" > | |||
<Button Content="夹爪正转" Command="{Binding PawTurnFront}" Margin="5,0" Cursor="Hand"/> | |||
<Button Content="夹爪反转" Command="{Binding PawTurnBack}" Margin="5,0" Cursor="Hand"/> | |||
<RadioButton Content="位置2" Margin="5,0" IsEnabled="False" IsChecked="{Binding PawPositon1}" GroupName="a"/> | |||
<RadioButton Content="位置1" Margin="5,0" IsEnabled="False" IsChecked="{Binding PawPositon2}" GroupName="b"/> | |||
<RadioButton Content="位置3" Margin="5,0 " IsEnabled="False" IsChecked="{Binding PawPositon3}" GroupName="c"/> | |||
</WrapPanel> | |||
</Grid> | |||
</GroupBox> | |||
<StackPanel Orientation="Vertical" Grid.Row="2"> | |||
<GroupBox Header="配料仓控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="95"> | |||
<GroupBox Header="配料仓控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="65"> | |||
<WrapPanel Orientation="Horizontal" Grid.RowSpan="2" VerticalAlignment="Top" Margin="0,5,0,0" > | |||
<TextBlock Text="通道号" Margin="5,0"/> | |||
<ComboBox ItemsSource="{Binding PassageWays}" Width="120" Margin="5,0" | |||
@@ -77,7 +141,7 @@ | |||
<Button Content="HBOT放盒子到位" Command="{Binding HBOTGoWork}" Margin="10,0,10,0"></Button> | |||
<Button Content="出餐启动" Command="{Binding OutMeal}" Margin="10,0,10,0"></Button> | |||
</WrapPanel> | |||
<WrapPanel Grid.Row="2"> | |||
<TextBlock Text="加热挡位:" Margin="10,0,0,0" /> | |||
<ComboBox ItemsSource="{Binding lstFire}" Width="80" Margin="10,0,10,0" HorizontalAlignment="Center" VerticalAlignment="Center" | |||
@@ -89,7 +153,7 @@ | |||
<Button Content="设定" Margin="0,0,30,0" Command="{Binding SetStir}"/> | |||
</WrapPanel> | |||
</Grid> | |||
</GroupBox> | |||
<GroupBox Header="炒锅2" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="140"> | |||
<WrapPanel VerticalAlignment="Top" Margin="0,5,0,0"> | |||
@@ -106,7 +170,7 @@ | |||
<Button Content="翻炒机3挡" Command="{Binding SecOverThreeBlock}" Margin="10,0,10,0"></Button> | |||
</WrapPanel> | |||
</GroupBox> | |||
</StackPanel> | |||
@@ -24,7 +24,7 @@ namespace BPASmartClient.MorkF.View | |||
public DebugView() | |||
{ | |||
InitializeComponent(); | |||
this.DataContext = new DebugViewModel(); | |||
} | |||
} | |||
@@ -1,9 +1,12 @@ | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.Business; | |||
using BPASmartClient.Device; | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.MorkF.Model; | |||
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.Text; | |||
using System.Threading.Tasks; | |||
@@ -13,30 +16,68 @@ namespace BPASmartClient.MorkF.ViewModel | |||
internal class DebugViewModel : ObservableObject | |||
{ | |||
public bool SimOrderEnable { get { return General_Config.SimOrderAllow; } set { General_Config.SimOrderAllow = value; OnPropertyChanged(); } } | |||
/// <summary> | |||
/// 设备数据 | |||
/// </summary> | |||
public ObservableCollection<VariableMonitor> variableMonitors { get; set; } | |||
/// <summary> | |||
/// 设备ID | |||
/// </summary> | |||
public int DeviceId { get; set; } | |||
#region 设备控制 | |||
public RelayCommand PlcInite { get; set; } | |||
public RelayCommand SimulateOrder { get; set; } | |||
public RelayCommand MaterialOne { get; set; } | |||
public RelayCommand MaterialTwo { get; set; } | |||
public RelayCommand MaterialThree { get; set; } | |||
public RelayCommand MaterialFour { get; set; } | |||
public RelayCommand MaterialFive { get; set; } | |||
public RelayCommand OpenExhaust { get;set; } | |||
public RelayCommand CloaseExhaust { get; set; } | |||
public RelayCommand StartQXOne { get; set; } | |||
public RelayCommand StartQXTwo { get; set; } | |||
#endregion | |||
public RelayCommand FoodPlcInite { get; set; } | |||
public RelayCommand Plc1Reset { get; set; } | |||
#endregion | |||
#region 菜品控制 | |||
public string RealX { get { return _realX; } set { _realX = value; OnPropertyChanged(); } } | |||
private string _realX; | |||
public string RealY { get { return _realY; } set { _realY = value; OnPropertyChanged(); } } | |||
private string _realY; | |||
public int SettingX { get { return _settingX; } set { _settingX = value; OnPropertyChanged(); } } | |||
private int _settingX = 0; | |||
public int SettingY { get { return _settingY; } set { _settingY = value; OnPropertyChanged(); } } | |||
private int _settingY = 0; | |||
public int MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; OnPropertyChanged(); } } | |||
private int _moveSpeed; | |||
public string SensingDistance_1 { get { return _sensingDistance_1; } set { _sensingDistance_1 = value; OnPropertyChanged(); } } | |||
private string _sensingDistance_1 ; | |||
public string SensingDistance_2 { get { return _sensingDistance_2; } set { _sensingDistance_2 = value; OnPropertyChanged(); } } | |||
private string _sensingDistance_2 ; | |||
public string SensingDistance_3 { get { return _sensingDistance_3; } set { _sensingDistance_3 = value; OnPropertyChanged(); } } | |||
private string _sensingDistance_3; | |||
public bool PawPositon1 { get { return _pawPositon1; } set { _pawPositon1 = value; OnPropertyChanged(); } } | |||
private bool _pawPositon1; | |||
public bool PawPositon2 { get { return _pawPositon2; } set { _pawPositon2 = value; OnPropertyChanged(); } } | |||
private bool _pawPositon2; | |||
public bool PawPositon3 { get { return _pawPositon3; } set { _pawPositon3 = value; OnPropertyChanged(); } } | |||
private bool _pawPositon3; | |||
public RelayCommand FoodLibInit { get; set; }//初始化 | |||
public RelayCommand StartElectromagnetism { get; set; }//电磁阀启动 | |||
public RelayCommand StopElectromagnetism { get; set; } | |||
public RelayCommand SetSpeed { get; set; }//速度设定 | |||
public RelayCommand GetDistance_1 { get; set; }//感应测距1 | |||
public RelayCommand GetDistance_2 { get; set; }//感应测距2 | |||
public RelayCommand GetDistance_3 { get; set; }//感应测距3 | |||
public RelayCommand PawTurnFront { get; set; }//夹爪正转 | |||
public RelayCommand PawTurnBack { get; set; }//夹爪反转 | |||
public RelayCommand SetArmPosition { get; set; }//机器臂位置设定 | |||
public RelayCommand ShreddCabbage { get; set; } | |||
public RelayCommand FryPork { get; set; } | |||
public RelayCommand XingBaoGu { get; set; } | |||
#endregion | |||
#region 配料仓控制 | |||
public List<string> PassageWays = new List<string>() | |||
public List<string> PassageWays { get; set; } = new List<string>() | |||
{ | |||
"通道1", | |||
"通道2", | |||
@@ -61,6 +102,7 @@ namespace BPASmartClient.MorkF.ViewModel | |||
#endregion | |||
#region 炒锅1 | |||
public RelayCommand Pot1SimOrder { get; set; } | |||
public RelayCommand AddOil { get; set; } | |||
public RelayCommand StartFire { get; set; } | |||
public RelayCommand StopFire { get; set; } | |||
@@ -79,6 +121,28 @@ namespace BPASmartClient.MorkF.ViewModel | |||
private int _fireGear; | |||
public int StirGear { get { return _stirGear; } set { _stirGear = value; OnPropertyChanged(); } } | |||
private int _stirGear; | |||
#region 模拟 | |||
public int OilTime { get { return _oilTime; } set { _oilTime = value; OnPropertyChanged(); } } | |||
private int _oilTime = 10; | |||
public int OilFirGear { get { return _oilFirGear; } set { _oilFirGear = value; OnPropertyChanged(); } } | |||
private int _oilFirGear = 3; | |||
public int OilStrGear { get { return _oilStrGear; } set { _oilStrGear = value; OnPropertyChanged(); } } | |||
private int _oilStrGear = 1; | |||
public int Food1Time { get { return _food1Time; } set { _food1Time = value; OnPropertyChanged(); } } | |||
private int _food1Time = 30; | |||
public int Food1FirGear { get { return _food1FirGear; } set { _food1FirGear = value; OnPropertyChanged(); } } | |||
private int _food1FirGear = 6; | |||
public int Food1StrGear { get { return _food1StrGear; } set { _food1StrGear = value; OnPropertyChanged(); } } | |||
private int _food1StrGear = 2; | |||
public int Food2Time { get { return _food2Time; } set { _food2Time = value; OnPropertyChanged(); } } | |||
private int _food2Time = 30; | |||
public int Food2FirGear { get { return _food2FirGear; } set { _food2FirGear = value; OnPropertyChanged(); } } | |||
private int _food2FirGear = 6; | |||
public int Food2StrGear { get { return _food2StrGear; } set { _food2StrGear = value; OnPropertyChanged(); } } | |||
private int _food2StrGear = 2; | |||
#endregion | |||
#endregion | |||
@@ -102,28 +166,33 @@ namespace BPASmartClient.MorkF.ViewModel | |||
{ | |||
#region 设备控制 | |||
PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | |||
SimulateOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("SimultaorOrder"); }); | |||
MaterialOne = new RelayCommand(() => { ActionManage.GetInstance.Send("MaterialOne"); }); | |||
MaterialTwo = new RelayCommand(() => { ActionManage.GetInstance.Send("MaterialTwo"); }); | |||
MaterialThree = new RelayCommand(() => { ActionManage.GetInstance.Send("MaterialThree"); }); | |||
MaterialFour = new RelayCommand(() => { ActionManage.GetInstance.Send("MaterialFour"); }); | |||
MaterialFive = new RelayCommand(() => { ActionManage.GetInstance.Send("MaterialFive"); }); | |||
OpenExhaust = new RelayCommand(() => { ActionManage.GetInstance.Send("OpenExhaust"); }); | |||
CloaseExhaust = new RelayCommand(() => { ActionManage.GetInstance.Send("CloseExhaust"); }); | |||
StartQXOne = new RelayCommand(() => { ActionManage.GetInstance.Send("StartQXOne", 1); }); | |||
StartQXTwo = new RelayCommand(() => { ActionManage.GetInstance.Send("StartQXTwo", 2); }); | |||
FoodPlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("FoodPlcInite"); }); | |||
Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); | |||
#endregion | |||
ShreddCabbage = new RelayCommand(() => { ActionManage.GetInstance.Send("ShreddCabbage"); }); | |||
FryPork = new RelayCommand(() => { ActionManage.GetInstance.Send("FryPork"); }); | |||
XingBaoGu = new RelayCommand(() => { ActionManage.GetInstance.Send("XingBaoGu"); }); | |||
#region 菜品控制 | |||
FoodLibInit = new RelayCommand(() => { ActionManage.GetInstance.Send("FoodLibInit"); });//菜品库初始化 | |||
StartElectromagnetism = new RelayCommand(() => { ActionManage.GetInstance.Send("Electromagnetism", new List<bool> { true }); });//电磁阀启动 | |||
StopElectromagnetism = new RelayCommand(() => { ActionManage.GetInstance.Send("Electromagnetism", new List<bool> { false });});//电磁阀关闭 | |||
SetSpeed = new RelayCommand(() => | |||
{ | |||
ActionManage.GetInstance.Send("SetSpeed", new List<int> { MoveSpeed }); | |||
});//设定速度 | |||
GetDistance_1 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_1"); });//感应距离1 | |||
GetDistance_2 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_2"); });//感应距离2 | |||
GetDistance_3 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_3"); });//感应距离3 | |||
PawTurnFront = new RelayCommand(() => { ActionManage.GetInstance.Send("PawTurnFront"); });//夹爪正转 | |||
PawTurnBack = new RelayCommand(() => { ActionManage.GetInstance.Send("PawTurnBack"); });//夹爪反转 | |||
SetArmPosition = new RelayCommand(() => { ActionManage.GetInstance.Send("SetArmPosition", new List<int> { SettingX, SettingY }); });//设定机械臂位置 | |||
#endregion | |||
#region 配料仓控制 | |||
OutMaterials = new RelayCommand(() => { ActionManage.GetInstance.Send("OutMaterials" ,new List<int> { PassagePosition,Weight } ); }); | |||
#endregion | |||
#region 炒锅1 | |||
Pot1SimOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("模拟小炒锅1订单",new List<int> { OilTime,OilFirGear,OilStrGear,Food1Time,Food1FirGear,Food1StrGear,Food2Time,Food2FirGear,Food2StrGear }); });//模拟订单 | |||
AddOil = new RelayCommand(() => { ActionManage.GetInstance.Send("AddOil", 1); });//加油 | |||
StartFire = new RelayCommand(() => { ActionManage.GetInstance.Send("StartFire"); });//加热启动 | |||
StopFire = new RelayCommand(() => { ActionManage.GetInstance.Send("StopFire"); });//加热停止 | |||
@@ -138,8 +207,6 @@ namespace BPASmartClient.MorkF.ViewModel | |||
SetStir = new RelayCommand(() => { ActionManage.GetInstance.Send("SetStir", new List<int> { StirGear }); });//搅拌挡位设定 | |||
#endregion | |||
#region 炒锅2 | |||
SecAddOil = new RelayCommand(() => { ActionManage.GetInstance.Send("AddOil", 2); }); | |||
SecTempTurnOff = new RelayCommand(() => { ActionManage.GetInstance.Send("TakeOff", 2); }); | |||
@@ -155,6 +222,23 @@ namespace BPASmartClient.MorkF.ViewModel | |||
SecAutoModel = new RelayCommand(() => { ActionManage.GetInstance.Send("AutoModel", 2); }); | |||
SecManualModel = new RelayCommand(() => { ActionManage.GetInstance.Send("ManualModel", 2); }); | |||
#endregion | |||
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) | |||
{ | |||
RealX = variableMonitors.FirstOrDefault(p => p.Notes == "机械手臂X").CurrentValue; | |||
RealY = variableMonitors.FirstOrDefault(p => p.Notes == "机械手臂Y").CurrentValue; | |||
} | |||
}), "获取小炒数据"); | |||
} | |||
} | |||
@@ -9,7 +9,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Models" Version="1.0.13" /> | |||
<PackageReference Include="BPA.Models" Version="1.0.31" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
<PackageReference Include="System.Speech" Version="6.0.0" /> | |||
</ItemGroup> | |||
@@ -9,7 +9,7 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Models" Version="1.0.13" /> | |||
<PackageReference Include="BPA.Models" Version="1.0.31" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
</ItemGroup> | |||
@@ -87,6 +87,7 @@ namespace BPASmartClient.ViewModel | |||
} | |||
} | |||
} | |||
} | |||
private void NewCommunication(object? obj) | |||
@@ -109,7 +110,8 @@ namespace BPASmartClient.ViewModel | |||
{ | |||
CommunicationName = $"Communication_{num}", | |||
DeviceModelId = deviceConfig.ElementAt(0).deviceModels.FirstOrDefault(p => p.DeviceName == dm.DeviceName)?.Id, | |||
communicationPar = new CommunicationPar() { IsNetworkPort = false } | |||
communicationPar = new CommunicationPar() { IsNetworkPort = false }, | |||
}); | |||
break; | |||
@@ -78,17 +78,40 @@ namespace BPASmartClient.Control | |||
int commIndex = Array.FindIndex(ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ToArray(), p => p.DeviceModelId == communicationModel.DeviceModelId); | |||
if (commIndex >= 0 && commIndex < ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.Count) | |||
{ | |||
if (ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count <= 0) | |||
foreach (var item in ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies) | |||
{ | |||
for (int i = 0; i < 20; i++) | |||
if (item.variables.Count <= 0) | |||
{ | |||
ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Add(new Variable() | |||
for (int i = 0; i < 20; i++) | |||
{ | |||
Id = ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count, | |||
Address = string.Empty, | |||
ReadLeng = 0 | |||
}); | |||
item.variables.Add(new Variable() | |||
{ | |||
Id = ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count, | |||
Address = string.Empty, | |||
ReadLeng = 0 | |||
}); | |||
} | |||
} | |||
//if (ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count <= 0) | |||
//{ | |||
// for (int i = 0; i < 20; i++) | |||
// { | |||
// ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Add(new Variable() | |||
// { | |||
// Id = ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count, | |||
// Address = string.Empty, | |||
// ReadLeng = 0 | |||
// }); | |||
// } | |||
// { | |||
// ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Add(new Variable() | |||
// { | |||
// Id = ShopDeviceConfigViewModel.deviceConfig.ElementAt(0).deviceModels.ElementAt(index).communicationDevcies.ElementAt(commIndex).variables.Count, | |||
// Address = string.Empty, | |||
// ReadLeng = 0 | |||
// }); | |||
// } | |||
//} | |||
} | |||
} | |||
} | |||
@@ -16,7 +16,7 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | |||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | |||
</ItemGroup> | |||