Browse Source

morkf

样式分支
NXX 1 year ago
parent
commit
2a3924abac
23 changed files with 1148 additions and 2343 deletions
  1. +1
    -1
      BPASmartClient.Business/BPASmartClient.Business.csproj
  2. +1
    -1
      BPASmartClient.Business/Plugin/DeviceMgr.cs
  3. +1
    -1
      BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj
  4. +1
    -1
      BPASmartClient.Device/BPASmartClient.Device.csproj
  5. +1
    -1
      BPASmartClient.DosingProject/BPASmartClient.DosingHKProject.csproj
  6. +1
    -1
      BPASmartClient.JXJFoodSmallStation/BPASmartClient.JXJFoodSmallStation.csproj
  7. +2
    -2
      BPASmartClient.JXJFoodSmallStation/Model/RawMaterial/DeviceInquire.cs
  8. +145
    -32
      BPASmartClient.MilkWithTea/View/RecipeConfige.xaml.cs
  9. +27
    -1
      BPASmartClient.Modbus/ModbusTcp.cs
  10. +1
    -1
      BPASmartClient.Model/BPASmartClient.Model.csproj
  11. +2
    -1
      BPASmartClient.MorkF/BPASmartClient.MorkF.csproj
  12. +598
    -1955
      BPASmartClient.MorkF/Control_MorkF.cs
  13. +100
    -267
      BPASmartClient.MorkF/GVL_MorkF.cs
  14. +14
    -0
      BPASmartClient.MorkF/Model/StirFryPushMessages.cs
  15. +4
    -2
      BPASmartClient.MorkF/OrderLocInfo.cs
  16. +95
    -31
      BPASmartClient.MorkF/View/DebugView.xaml
  17. +1
    -1
      BPASmartClient.MorkF/View/DebugView.xaml.cs
  18. +117
    -33
      BPASmartClient.MorkF/ViewModel/DebugViewModel.cs
  19. +1
    -1
      BPASmartClient.MorkS/BPASmartClient.MorkS.csproj
  20. +1
    -1
      BPASmartClient.MorkT_HQ/BPASmartClient.MorkTHQ.csproj
  21. +3
    -1
      BPASmartClient.ViewModel/ShopDeviceConfigViewModel.cs
  22. +30
    -7
      BPASmartClient/Control/ShopDeviceConfigView.xaml.cs
  23. +1
    -1
      DosingSystem/BPASmartClient.DosingSystem.csproj

+ 1
- 1
BPASmartClient.Business/BPASmartClient.Business.csproj View File

@@ -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" />


+ 1
- 1
BPASmartClient.Business/Plugin/DeviceMgr.cs View File

@@ -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
{


+ 1
- 1
BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj View File

@@ -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>


+ 1
- 1
BPASmartClient.Device/BPASmartClient.Device.csproj View File

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

<ItemGroup>
<PackageReference Include="BPA.Message" Version="1.0.46" />
<PackageReference Include="BPA.Message" Version="1.0.66" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
BPASmartClient.DosingProject/BPASmartClient.DosingHKProject.csproj View File

@@ -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>



+ 1
- 1
BPASmartClient.JXJFoodSmallStation/BPASmartClient.JXJFoodSmallStation.csproj View File

@@ -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>


+ 2
- 2
BPASmartClient.JXJFoodSmallStation/Model/RawMaterial/DeviceInquire.cs View File

@@ -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);
}


+ 145
- 32
BPASmartClient.MilkWithTea/View/RecipeConfige.xaml.cs View File

@@ -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;
}
}
}
}
}
}

+ 27
- 1
BPASmartClient.Modbus/ModbusTcp.cs View File

@@ -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;


+ 1
- 1
BPASmartClient.Model/BPASmartClient.Model.csproj View File

@@ -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>



+ 2
- 1
BPASmartClient.MorkF/BPASmartClient.MorkF.csproj View File

@@ -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>


+ 598
- 1955
BPASmartClient.MorkF/Control_MorkF.cs
File diff suppressed because it is too large
View File


+ 100
- 267
BPASmartClient.MorkF/GVL_MorkF.cs View File

@@ -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" },
};
}
}


+ 14
- 0
BPASmartClient.MorkF/Model/StirFryPushMessages.cs View File

@@ -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();
}
}

+ 4
- 2
BPASmartClient.MorkF/OrderLocInfo.cs View File

@@ -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; }
}
}

+ 95
- 31
BPASmartClient.MorkF/View/DebugView.xaml View File

@@ -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>


+ 1
- 1
BPASmartClient.MorkF/View/DebugView.xaml.cs View File

@@ -24,7 +24,7 @@ namespace BPASmartClient.MorkF.View
public DebugView()
{
InitializeComponent();
this.DataContext = new DebugViewModel();
}
}


+ 117
- 33
BPASmartClient.MorkF/ViewModel/DebugViewModel.cs View File

@@ -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;
}
}), "获取小炒数据");
}

}


+ 1
- 1
BPASmartClient.MorkS/BPASmartClient.MorkS.csproj View File

@@ -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>


+ 1
- 1
BPASmartClient.MorkT_HQ/BPASmartClient.MorkTHQ.csproj View File

@@ -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>



+ 3
- 1
BPASmartClient.ViewModel/ShopDeviceConfigViewModel.cs View File

@@ -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;


+ 30
- 7
BPASmartClient/Control/ShopDeviceConfigView.xaml.cs View File

@@ -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
// });
// }
//}
}
}
}


+ 1
- 1
DosingSystem/BPASmartClient.DosingSystem.csproj View File

@@ -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>


Loading…
Cancel
Save