@@ -20,7 +20,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -8,7 +8,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -9,7 +9,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Communication" Version="1.0.36" /> | <PackageReference Include="BPA.Communication" Version="1.0.36" /> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.9" /> | <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.9" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -30,7 +30,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Communication" Version="1.0.36" /> | <PackageReference Include="BPA.Communication" Version="1.0.36" /> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -8,7 +8,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.ApolloClient" Version="1.0.12" /> | <PackageReference Include="BPA.ApolloClient" Version="1.0.12" /> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.33" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="BPA.Message" Version="1.0.86" /> | <PackageReference Include="BPA.Message" Version="1.0.86" /> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" /> | <PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" /> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0" /> | ||||
@@ -409,7 +409,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="BPA.Message" Version="1.0.86" /> | <PackageReference Include="BPA.Message" Version="1.0.86" /> | ||||
<PackageReference Include="MahApps.Metro.IconPacks.FontAwesome" Version="4.11.0" /> | <PackageReference Include="MahApps.Metro.IconPacks.FontAwesome" Version="4.11.0" /> | ||||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | ||||
@@ -81,7 +81,7 @@ namespace BPASmartClient.CustomResource.Pages.Model | |||||
catch (Exception) | catch (Exception) | ||||
{ | { | ||||
// throw; | |||||
// throw; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -109,34 +109,40 @@ namespace BPASmartClient.CustomResource.Pages.Model | |||||
public bool ShowDialog(string info, DialogType dialogType = DialogType.Information) | public bool ShowDialog(string info, DialogType dialogType = DialogType.Information) | ||||
{ | { | ||||
PromptView PV = new PromptView(); | |||||
PV.TextBlockInfo = info; | |||||
switch (dialogType) | |||||
bool result = false; | |||||
Application.Current.Dispatcher.Invoke(() => | |||||
{ | { | ||||
case DialogType.Warning: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.Yellow; | |||||
PV.infoType.Text = "警告:"; | |||||
//PV.Cancel.Visibility = Visibility.Collapsed; | |||||
break; | |||||
case DialogType.Error: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.Red; | |||||
PV.infoType.Text = "错误:"; | |||||
//PV.Cancel.Visibility = Visibility.Collapsed; | |||||
break; | |||||
case DialogType.Information: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.DeepSkyBlue; | |||||
PV.infoType.Text = "提示:"; | |||||
//PV.Cancel.Visibility = Visibility.Visible; | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
PV.infoType.Foreground = PV.TextBlockForeground; | |||||
var res = PV.ShowDialog(); | |||||
return res == null ? false : (bool)res; | |||||
PromptView PV = new PromptView(); | |||||
PV.TextBlockInfo = info; | |||||
switch (dialogType) | |||||
{ | |||||
case DialogType.Warning: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.Yellow; | |||||
PV.infoType.Text = "警告:"; | |||||
//PV.Cancel.Visibility = Visibility.Collapsed; | |||||
break; | |||||
case DialogType.Error: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.Red; | |||||
PV.infoType.Text = "错误:"; | |||||
//PV.Cancel.Visibility = Visibility.Collapsed; | |||||
break; | |||||
case DialogType.Information: | |||||
PV.TextBlockIcon = ""; | |||||
PV.TextBlockForeground = Brushes.DeepSkyBlue; | |||||
PV.infoType.Text = "提示:"; | |||||
//PV.Cancel.Visibility = Visibility.Visible; | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
PV.infoType.Foreground = PV.TextBlockForeground; | |||||
var res = PV.ShowDialog(); | |||||
result = res == null ? false : (bool)res; | |||||
}); | |||||
return result; | |||||
} | } | ||||
} | } | ||||
@@ -83,7 +83,7 @@ | |||||
Duration="0:0:20" /> | Duration="0:0:20" /> | ||||
</Storyboard> | </Storyboard> | ||||
</VisualState> | </VisualState> | ||||
<VisualState Name="Stop" /> | |||||
<!--<VisualState Name="Stop" />--> | |||||
</VisualStateGroup> | </VisualStateGroup> | ||||
<VisualStateGroup Name="DirectionGroup"> | <VisualStateGroup Name="DirectionGroup"> | ||||
<VisualState Name="LeftState"> | <VisualState Name="LeftState"> | ||||
@@ -96,6 +96,7 @@ | |||||
Duration="0:0:20" /> | Duration="0:0:20" /> | ||||
</Storyboard> | </Storyboard> | ||||
</VisualState> | </VisualState> | ||||
<VisualState Name="Stop" /> | |||||
<VisualState Name="RightState"> | <VisualState Name="RightState"> | ||||
<Storyboard RepeatBehavior="Forever"> | <Storyboard RepeatBehavior="Forever"> | ||||
<DoubleAnimation | <DoubleAnimation | ||||
@@ -37,7 +37,22 @@ namespace BPASmartClient.CustomResource.UserControls | |||||
private static void OnRunningChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | private static void OnRunningChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | ||||
{ | { | ||||
VisualStateManager.GoToState(d as ConveyBelt2, (bool)e.NewValue ? "RunState" : "Stop", false); | |||||
string status = "Stop"; | |||||
if ((bool)e.NewValue) | |||||
{ | |||||
if ((d as ConveyBelt2)?.BeltDirection == 0) | |||||
{ | |||||
VisualStateManager.GoToState(d as ConveyBelt2, "RightState", false); | |||||
return; | |||||
} | |||||
else | |||||
{ | |||||
VisualStateManager.GoToState(d as ConveyBelt2, "LeftState", false); | |||||
return; | |||||
} | |||||
} | |||||
VisualStateManager.GoToState(d as ConveyBelt2, status, false); | |||||
//VisualStateManager.GoToState(d as ConveyBelt2, (bool)e.NewValue ? "RunState" : "Stop", false); | |||||
} | } | ||||
public double BeltWidth | public double BeltWidth | ||||
@@ -59,7 +74,7 @@ namespace BPASmartClient.CustomResource.UserControls | |||||
if (BeltHeight > 100) | if (BeltHeight > 100) | ||||
{ | { | ||||
pathFigure.StartPoint = new Point(0, 35 + (BeltHeight - 100) / 2); | pathFigure.StartPoint = new Point(0, 35 + (BeltHeight - 100) / 2); | ||||
pathFigure.Segments.Add(new LineSegment(new Point(BeltWidth - 10, 35 + (BeltHeight - 100)/2), true)); | |||||
pathFigure.Segments.Add(new LineSegment(new Point(BeltWidth - 10, 35 + (BeltHeight - 100) / 2), true)); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -74,7 +89,7 @@ namespace BPASmartClient.CustomResource.UserControls | |||||
{ | { | ||||
this.recDown.Margin = new Thickness(0, BeltHeight - 20, 0, 0); | this.recDown.Margin = new Thickness(0, BeltHeight - 20, 0, 0); | ||||
} | } | ||||
else | |||||
else | |||||
{ | { | ||||
this.recDown.Margin = new Thickness(0, 80, 0, 0); | this.recDown.Margin = new Thickness(0, 80, 0, 0); | ||||
} | } | ||||
@@ -115,15 +130,29 @@ namespace BPASmartClient.CustomResource.UserControls | |||||
private static void OnDirectionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | private static void OnDirectionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | ||||
{ | { | ||||
if ((d as ConveyBelt2)?.BeltDirection == 0) | |||||
{ | |||||
VisualStateManager.GoToState(d as ConveyBelt2, "RightState", false); | |||||
} | |||||
else | |||||
string status = "Stop"; | |||||
if ((d as ConveyBelt2).IsRun) | |||||
{ | { | ||||
VisualStateManager.GoToState(d as ConveyBelt2, "LeftState", false); | |||||
if ((d as ConveyBelt2)?.BeltDirection == 0) | |||||
{ | |||||
VisualStateManager.GoToState(d as ConveyBelt2, "RightState", false); | |||||
return; | |||||
} | |||||
else | |||||
{ | |||||
VisualStateManager.GoToState(d as ConveyBelt2, "LeftState", false); | |||||
return; | |||||
} | |||||
} | } | ||||
VisualStateManager.GoToState(d as ConveyBelt2, status, false); | |||||
//if ((d as ConveyBelt2)?.BeltDirection == 0) | |||||
//{ | |||||
// VisualStateManager.GoToState(d as ConveyBelt2, "RightState", false); | |||||
//} | |||||
//else | |||||
//{ | |||||
// VisualStateManager.GoToState(d as ConveyBelt2, "LeftState", false); | |||||
//} | |||||
} | } | ||||
} | } | ||||
@@ -1,4 +1,5 @@ | |||||
<Application x:Class="BPASmartClient.DosingSystemSingle.App" | |||||
<Application | |||||
x:Class="BPASmartClient.DosingSystemSingle.App" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||||
xmlns:con="clr-namespace:BPASmartClient.CustomResource.Converters;assembly=BPASmartClient.CustomResource" | xmlns:con="clr-namespace:BPASmartClient.CustomResource.Converters;assembly=BPASmartClient.CustomResource" | ||||
@@ -16,7 +16,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.33" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="BPA.Message" Version="1.0.86" /> | <PackageReference Include="BPA.Message" Version="1.0.86" /> | ||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -170,7 +170,8 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
/// <summary> | /// <summary> | ||||
/// 配方下发状态 =0:配方未下发 ,1:配方下发给plc ,2:plc成功接收配方,正在配料 | /// 配方下发状态 =0:配方未下发 ,1:配方下发给plc ,2:plc成功接收配方,正在配料 | ||||
/// </summary> | /// </summary> | ||||
public int RecipeStatusIDTray2 { get; set; } = 0; | |||||
public int[] RecipeProcessStatus { get; set; } = new int[5] { 0, 0, 0, 0, 0 }; | |||||
[VarComm("Global", "当前配方正在配料位置")] | [VarComm("Global", "当前配方正在配料位置")] | ||||
/// <summary> | /// <summary> | ||||
@@ -8,6 +8,7 @@ using System.Threading.Tasks; | |||||
using BPASmartClient.S7Net; | using BPASmartClient.S7Net; | ||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using System.Threading; | using System.Threading; | ||||
using System.Collections.ObjectModel; | |||||
namespace BPASmartClient.JXJFoodSmallStation.Model.HK_PLC | namespace BPASmartClient.JXJFoodSmallStation.Model.HK_PLC | ||||
{ | { | ||||
@@ -188,5 +189,41 @@ namespace BPASmartClient.JXJFoodSmallStation.Model.HK_PLC | |||||
} | } | ||||
} | } | ||||
} | } | ||||
public void IssueRecipeToPlc(ObservableCollection<RemoteRecipeRawMaterial> rawMaterials,int recipeLoction) | |||||
{ | |||||
if (IsConnected) | |||||
{ | |||||
ushort barrel1 = 0; | |||||
ushort barrel2 = 0; | |||||
ushort barrel3 = 0; | |||||
foreach (var item in rawMaterials) | |||||
{ | |||||
switch (item.RawMaterialBarrelNum) | |||||
{ | |||||
case 1: | |||||
barrel1 = barrel1.SetBitValue((byte)item.RawMaterialLocation, true); | |||||
break; | |||||
case 2: | |||||
barrel2 = barrel2.SetBitValue((byte)item.RawMaterialLocation, true); | |||||
break; | |||||
case 3: | |||||
barrel3 = barrel3.SetBitValue((byte)item.RawMaterialLocation, true); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
string AddresBarrel1 = "DB4.DBW" + (12 + (recipeLoction - 1) * 6); | |||||
string AddresBarrel2 = "DB4.DBW" + (14 + (recipeLoction - 1) * 6); | |||||
string AddresBarrel3 = "DB4.DBW" + (16 + (recipeLoction - 1) * 6); | |||||
HK_PLC_S7.Write<ushort>(AddresBarrel1, barrel1); | |||||
HK_PLC_S7.Write<ushort>(AddresBarrel2, barrel2); | |||||
HK_PLC_S7.Write<ushort>(AddresBarrel3, barrel3); | |||||
MessageNotify.GetInstance.ShowRunLog($"配方下发,plc配方位置{recipeLoction},桶1料仓配料{barrel1.ToBinString}"); | |||||
MessageNotify.GetInstance.ShowRunLog($"配方下发,plc配方位置{recipeLoction},桶2料仓配料{barrel1.ToBinString}"); | |||||
MessageNotify.GetInstance.ShowRunLog($"配方下发,plc配方位置{recipeLoction},桶3料仓配料{barrel1.ToBinString}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | |||||
} |
@@ -38,8 +38,11 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
/// 配方队列 | /// 配方队列 | ||||
/// </summary> | /// </summary> | ||||
public ConcurrentQueue<string> RecipeQueueTray1 = new ConcurrentQueue<string>(); | public ConcurrentQueue<string> RecipeQueueTray1 = new ConcurrentQueue<string>(); | ||||
public ConcurrentQueue<string> RecipeQueueTray2 = new ConcurrentQueue<string>(); | public ConcurrentQueue<string> RecipeQueueTray2 = new ConcurrentQueue<string>(); | ||||
public SiemensDeviceStatus SiemensDevice = new SiemensDeviceStatus(); | public SiemensDeviceStatus SiemensDevice = new SiemensDeviceStatus(); | ||||
public HKDeviceStatus HKDevice = new HKDeviceStatus(); | public HKDeviceStatus HKDevice = new HKDeviceStatus(); | ||||
public WindSendDeviceStatus WindSendDevice = new WindSendDeviceStatus(); | public WindSendDeviceStatus WindSendDevice = new WindSendDeviceStatus(); | ||||
@@ -1,5 +1,7 @@ | |||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Message; | using BPASmartClient.Message; | ||||
using System.Net; | |||||
using System.Net.NetworkInformation; | |||||
using System.Text; | using System.Text; | ||||
namespace BPASmartClient.JakaRobot | namespace BPASmartClient.JakaRobot | ||||
@@ -60,7 +62,7 @@ namespace BPASmartClient.JakaRobot | |||||
//public const string SENCE_初始位 = "20000"; | //public const string SENCE_初始位 = "20000"; | ||||
#endregion | #endregion | ||||
private int rshd = -1; | |||||
public int rshd = -1; | |||||
private bool login = false; | private bool login = false; | ||||
/// <summary> | /// <summary> | ||||
@@ -74,49 +76,124 @@ namespace BPASmartClient.JakaRobot | |||||
public bool IsIdle { get; set; } = false; | public bool IsIdle { get; set; } = false; | ||||
public bool IsConnected { get { return login; } } | public bool IsConnected { get { return login; } } | ||||
public bool IsDeviceFirstInit { get; set; } | public bool IsDeviceFirstInit { get; set; } | ||||
private string IpAddress { get; set; } | |||||
private bool IsPingOk { get; set; } | |||||
public void Conn(string ip) | |||||
{ | |||||
jakaAPI.create_handler(ip.ToCharArray(), ref rshd); | |||||
login = true; | |||||
} | |||||
public void Connect(string ip) | public void Connect(string ip) | ||||
{ | { | ||||
bool ErrorFlag = false; | |||||
ThreadManage.GetInstance().StartLong(new Action(() => | |||||
MessageLog.GetInstance.Show("节卡机器人连接中。。。。。"); | |||||
IpAddress = ip; | |||||
Task.Factory.StartNew(() => | |||||
{ | { | ||||
if (rshd == -1 || login == false) | |||||
while (!IsPingOk) | |||||
{ | { | ||||
try | |||||
{ | |||||
jakaAPI.create_handler(ip.ToCharArray(), ref rshd); | |||||
login = true; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (!ErrorFlag) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx(ex.ToString()); | |||||
ErrorFlag = true; | |||||
login = false; | |||||
} | |||||
Thread.Sleep(3000); | |||||
} | |||||
Ping myPing = new Ping(); | |||||
myPing.PingCompleted += new PingCompletedEventHandler(_myPing_PingCompleted); | |||||
myPing.SendAsync(IpAddress, 1000, null); | |||||
Thread.Sleep(3000); | |||||
} | } | ||||
if (login && IsDeviceFirstInit==false) | |||||
}); | |||||
//bool ErrorFlag = false; | |||||
//ThreadManage.GetInstance().StartLong(new Action(() => | |||||
//{ | |||||
// if (rshd == -1 || login == false) | |||||
// { | |||||
// try | |||||
// { | |||||
// jakaAPI.create_handler(ip.ToCharArray(), ref rshd); | |||||
// login = true; | |||||
// } | |||||
// catch (Exception ex) | |||||
// { | |||||
// if (!ErrorFlag) | |||||
// { | |||||
// MessageLog.GetInstance.ShowEx(ex.ToString()); | |||||
// ErrorFlag = true; | |||||
// login = false; | |||||
// } | |||||
// Thread.Sleep(3000); | |||||
// } | |||||
// } | |||||
// if (login && IsDeviceFirstInit == false) | |||||
// { | |||||
// try | |||||
// { | |||||
// Power_On();//打开机器人电源 | |||||
// Thread.Sleep(1000); | |||||
// Enable_robot();//机器人上使能 | |||||
// IsDeviceFirstInit = true; | |||||
// MessageLog.GetInstance.Show("机器人已上电使能"); | |||||
// } | |||||
// catch (Exception ex) | |||||
// { | |||||
// MessageLog.GetInstance.ShowEx("机器人未完成上电和使能"); | |||||
// } | |||||
// } | |||||
// Thread.Sleep(5000); | |||||
//}), $"节卡机器人连接", true); | |||||
} | |||||
private void _myPing_PingCompleted(object sender, PingCompletedEventArgs e) | |||||
{ | |||||
if (e.Reply != null && e.Reply.Status == IPStatus.Success) | |||||
{ | |||||
IsPingOk = true; | |||||
MessageLog.GetInstance.Show("节卡机器人物理网络准备就绪"); | |||||
Thread.Sleep(3000); | |||||
bool ErrorFlag = false; | |||||
ThreadManage.GetInstance().StartLong(new Action(() => | |||||
{ | { | ||||
try | |||||
if (rshd == -1 || login == false) | |||||
{ | { | ||||
Power_On();//打开机器人电源 | |||||
Thread.Sleep(1000); | |||||
Enable_robot();//机器人上使能 | |||||
IsDeviceFirstInit = true; | |||||
MessageLog.GetInstance.Show("机器人已上电使能"); | |||||
try | |||||
{ | |||||
int result = jakaAPI.create_handler(IpAddress.ToCharArray(), ref rshd); | |||||
login = true; | |||||
MessageLog.GetInstance.Show($"节卡机器人创建连接成功,句柄:{rshd},返回值:{result}"); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (!ErrorFlag) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx(ex.ToString()); | |||||
ErrorFlag = true; | |||||
login = false; | |||||
} | |||||
Thread.Sleep(3000); | |||||
} | |||||
} | } | ||||
catch (Exception ex) | |||||
if (login && IsDeviceFirstInit == false) | |||||
{ | { | ||||
MessageLog.GetInstance.ShowEx("机器人未完成上电和使能"); | |||||
try | |||||
{ | |||||
MessageLog.GetInstance.Show("节卡机器人打开电源准备"); | |||||
Thread.Sleep(2000); | |||||
Power_On();//打开机器人电源 | |||||
Thread.Sleep(1000); | |||||
MessageLog.GetInstance.Show("节卡机器人上使能准备"); | |||||
Enable_robot();//机器人上使能 | |||||
IsDeviceFirstInit = true; | |||||
MessageLog.GetInstance.Show("机器人已上电使能"); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("机器人未完成上电和使能"); | |||||
} | |||||
} | } | ||||
} | |||||
Thread.Sleep(5000); | |||||
}), $"节卡机器人连接", true); | |||||
Thread.Sleep(5000); | |||||
}), $"节卡机器人连接", true); | |||||
} | |||||
} | } | ||||
public void Power_On() | public void Power_On() | ||||
{ | { | ||||
if (login) | if (login) | ||||
@@ -129,10 +206,10 @@ namespace BPASmartClient.JakaRobot | |||||
{ | { | ||||
MessageLog.GetInstance.ShowEx(ave.ToString()); | MessageLog.GetInstance.ShowEx(ave.ToString()); | ||||
} | } | ||||
//catch (Exception ex) | |||||
//{ | |||||
// MessageLog.GetInstance.ShowEx(ex.ToString()); | |||||
//} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx(ex.ToString()); | |||||
} | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -324,8 +401,8 @@ namespace BPASmartClient.JakaRobot | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
//加载 | |||||
p: file = Programname.ToCharArray(); | |||||
//加载 | |||||
p: file = Programname.ToCharArray(); | |||||
MessageLog.GetInstance.Show($"调用文件名:{Programname}"); | MessageLog.GetInstance.Show($"调用文件名:{Programname}"); | ||||
status = new JKTYPE.ProgramState(); | status = new JKTYPE.ProgramState(); | ||||
jakaAPI.get_program_state(ref rshd, ref status); | jakaAPI.get_program_state(ref rshd, ref status); | ||||
@@ -1,14 +0,0 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.Model | |||||
{ | |||||
public class GlobalFoodMenu | |||||
{ | |||||
public static ObservableCollection<FoodMenuModel> LocalFoodMenus = new ObservableCollection<FoodMenuModel>(); | |||||
} | |||||
} |
@@ -0,0 +1,15 @@ | |||||
using BPA.Models; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.Model.小炒机 | |||||
{ | |||||
public class MaterialAndFryingTime | |||||
{ | |||||
public Dictionary<string, ObservableCollection<PotActions>> materials { get; set; } = new Dictionary<string, ObservableCollection<PotActions>>(); | |||||
} | |||||
} |
@@ -13,6 +13,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" /> | <ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | <ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.ViewModel\BPASmartClient.ViewModel.csproj" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -9,6 +9,7 @@ using BPASmartClient.Model; | |||||
using BPASmartClient.Model.大炒; | using BPASmartClient.Model.大炒; | ||||
using BPASmartClient.MorkBF.Model; | using BPASmartClient.MorkBF.Model; | ||||
using BPASmartClient.MorkBF.ViewModel; | using BPASmartClient.MorkBF.ViewModel; | ||||
using BPASmartClient.ViewModel; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | using System.Linq; | ||||
@@ -36,14 +37,14 @@ namespace BPASmartClient.MorkBF | |||||
MonitorViewModel.DeviceId = DeviceId; | MonitorViewModel.DeviceId = DeviceId; | ||||
ActionManage.GetInstance.Register(new Action(() => | ActionManage.GetInstance.Register(new Action(() => | ||||
{ | { | ||||
GlobalFoodMenu.LocalFoodMenus.Clear(); | |||||
if (BPASmartClient.Helper.Json<LocalFryPotMessage>.Data.FryPotMessage.Count > 0) | |||||
{ | |||||
foreach (var item in BPASmartClient.Helper.Json<LocalFryPotMessage>.Data.FryPotMessage) | |||||
{ | |||||
GlobalFoodMenu.LocalFoodMenus.Add(new FoodMenuModel { GoodKey = item.GoodKey, GoodName = item.GoodName }); | |||||
} | |||||
} | |||||
//GlobalFoodMenu.LocalFoodMenus.Clear(); | |||||
//if (BPASmartClient.Helper.Json<LocalFryPotMessage>.Data.FryPotMessage.Count > 0) | |||||
//{ | |||||
// foreach (var item in BPASmartClient.Helper.Json<LocalFryPotMessage>.Data.FryPotMessage) | |||||
// { | |||||
// GlobalFoodMenu.LocalFoodMenus.Add(new FoodMenuModel { GoodKey = item.GoodKey, GoodName = item.GoodName }); | |||||
// } | |||||
//} | |||||
}), "更新菜单"); | }), "更新菜单"); | ||||
CommandRegist();//调试 | CommandRegist();//调试 | ||||
ServerInit(); | ServerInit(); | ||||
@@ -1022,7 +1023,7 @@ namespace BPASmartClient.MorkBF | |||||
WorkStatus_1 = morkBF.FryPan1_TemperatureNow > 0 ? WorkStatus.工作 : WorkStatus.待机, | WorkStatus_1 = morkBF.FryPan1_TemperatureNow > 0 ? WorkStatus.工作 : WorkStatus.待机, | ||||
WorkStatus_2 = morkBF.FryPan2_TemperatureNow > 0 ? WorkStatus.工作 : WorkStatus.待机, | WorkStatus_2 = morkBF.FryPan2_TemperatureNow > 0 ? WorkStatus.工作 : WorkStatus.待机, | ||||
RobotStatu = WorkStatus.工作, | RobotStatu = WorkStatus.工作, | ||||
Alarm = new List<AlarmModel>(), | |||||
Alarm = new List<BPA.Message.AlarmModel>(), | |||||
FailuresCount = 0, | FailuresCount = 0, | ||||
StatsCount = statsModels, | StatsCount = statsModels, | ||||
MaxWok_Dishes_1 = "满汉全席", | MaxWok_Dishes_1 = "满汉全席", | ||||
@@ -18,6 +18,7 @@ | |||||
<ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | <ProjectReference Include="..\BPASmartClient.Device\BPASmartClient.Device.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Modbus\BPASmartClient.Modbus.csproj" /> | <ProjectReference Include="..\BPASmartClient.Modbus\BPASmartClient.Modbus.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | <ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.ViewModel\BPASmartClient.ViewModel.csproj" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -1,4 +1,5 @@ | |||||
using BPA.Message; | using BPA.Message; | ||||
using System; | |||||
using BPA.Message.Enum; | using BPA.Message.Enum; | ||||
using BPASmartClient.Device; | using BPASmartClient.Device; | ||||
using BPASmartClient.EventBus; | using BPASmartClient.EventBus; | ||||
@@ -16,6 +17,8 @@ using System.Windows.Documents; | |||||
using BPASmartClient.Business; | using BPASmartClient.Business; | ||||
using Microsoft.CodeAnalysis; | using Microsoft.CodeAnalysis; | ||||
using BPASmartClient.MorkF.ViewModel; | using BPASmartClient.MorkF.ViewModel; | ||||
using BPASmartClient.ViewModel; | |||||
using System.Windows; | |||||
namespace BPASmartClient.MorkF | namespace BPASmartClient.MorkF | ||||
{ | { | ||||
@@ -35,7 +38,7 @@ namespace BPASmartClient.MorkF | |||||
/// <summary> | /// <summary> | ||||
/// 菜品库while循环最大sleep次数 | /// 菜品库while循环最大sleep次数 | ||||
/// </summary> | /// </summary> | ||||
private const int materialSleepCount = 900; | |||||
private const int materialSleepCount = 600; | |||||
/// <summary> | /// <summary> | ||||
/// 菜品库while循环每次sleep时间 | /// 菜品库while循环每次sleep时间 | ||||
@@ -50,40 +53,40 @@ namespace BPASmartClient.MorkF | |||||
/// <summary> | /// <summary> | ||||
/// 菜品盒下移高度,相对于坐标系 | /// 菜品盒下移高度,相对于坐标系 | ||||
/// </summary> | /// </summary> | ||||
private const int materialBoxHigh = 4080; | |||||
//private const int materialBoxHigh = 4080; | |||||
//菜品库出餐高度 | |||||
private const int materialHigh = 33000; | |||||
////菜品库出餐高度 | |||||
//private const int materialHigh = 33000; | |||||
//传感器到菜品库的高度(坐标系) | |||||
private const int materialLaserHigh = 34500; | |||||
////传感器到菜品库的高度(坐标系) | |||||
//private const int materialLaserHigh = 34500; | |||||
/// <summary> | /// <summary> | ||||
/// 菜品盒坐标系高度 | /// 菜品盒坐标系高度 | ||||
/// </summary> | /// </summary> | ||||
private const int materialBoxHeight = 9500; | |||||
private const int materialBoxHeight = 9700; | |||||
//传感器1到菜品库的高度(厘米) | //传感器1到菜品库的高度(厘米) | ||||
private const int materialLaserHighCM_1 = 22; | |||||
//private const int materialLaserHighCM_1 = 22; | |||||
//传感器2到菜品库的高度(厘米) | |||||
private const int materialLaserHighCM_2 = 27; | |||||
////传感器2到菜品库的高度(厘米) | |||||
//private const int materialLaserHighCM_2 = 27; | |||||
//传感器3到菜品库的高度(厘米) | |||||
private const int materialLaserHighCM_3 = 31; | |||||
////传感器3到菜品库的高度(厘米) | |||||
//private const int materialLaserHighCM_3 = 31; | |||||
/// <summary> | /// <summary> | ||||
/// 传感器到隔板的距离(坐标系) | /// 传感器到隔板的距离(坐标系) | ||||
/// </summary> | /// </summary> | ||||
private const int clapboardLaserHigh = 10000; | private const int clapboardLaserHigh = 10000; | ||||
//炒锅1倒菜的xy坐标 | |||||
private const int materialPutPositionXFry1 = 70000; | |||||
private const int materialPutPositionYFry1 = 40000; | |||||
////炒锅1倒菜的xy坐标 | |||||
//private const int materialPutPositionXFry1 = 70000; | |||||
//private const int materialPutPositionYFry1 = 40000; | |||||
//炒锅2倒菜的xy坐标 | |||||
private const int materialPutPositionXFry2 = 70000; | |||||
private const int materialPutPositionYFry2 = 40000; | |||||
////炒锅2倒菜的xy坐标 | |||||
//private const int materialPutPositionXFry2 = 70000; | |||||
//private const int materialPutPositionYFry2 = 40000; | |||||
//菜品库机械爪放置菜品距离 | //菜品库机械爪放置菜品距离 | ||||
private const int materialToFryDistance = 10000; | private const int materialToFryDistance = 10000; | ||||
@@ -146,7 +149,7 @@ namespace BPASmartClient.MorkF | |||||
/// <summary> | /// <summary> | ||||
/// 告警列表 | /// 告警列表 | ||||
/// </summary> | /// </summary> | ||||
private List<AlarmModel> alarmModel = new List<AlarmModel>(); | |||||
private List<BPA.Message.AlarmModel> alarmModel = new List<BPA.Message.AlarmModel>(); | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -201,7 +204,7 @@ namespace BPASmartClient.MorkF | |||||
MaterialCoordinate.GetInstance().frying2 = materialCoordinate.frying2; | MaterialCoordinate.GetInstance().frying2 = materialCoordinate.frying2; | ||||
MaterialCoordinate.GetInstance().materialHeight = materialCoordinate.materialHeight; | MaterialCoordinate.GetInstance().materialHeight = materialCoordinate.materialHeight; | ||||
MaterialCoordinate.GetInstance().MaterialOneX = materialCoordinate.MaterialOneX; | MaterialCoordinate.GetInstance().MaterialOneX = materialCoordinate.MaterialOneX; | ||||
MaterialCoordinate.GetInstance().MaterialTwoX = materialCoordinate.MaterialTwoX; | |||||
MaterialCoordinate.GetInstance().MaterialTwoX = materialCoordinate.MaterialTwoX; | |||||
MaterialCoordinate.GetInstance().MaterialThreeX = materialCoordinate.MaterialThreeX; | MaterialCoordinate.GetInstance().MaterialThreeX = materialCoordinate.MaterialThreeX; | ||||
} | } | ||||
////菜品库编号与坐标系对象存储 | ////菜品库编号与坐标系对象存储 | ||||
@@ -346,7 +349,15 @@ namespace BPASmartClient.MorkF | |||||
ml_morkf.PawArrivePortThree = bools[2]; | ml_morkf.PawArrivePortThree = bools[2]; | ||||
} | } | ||||
}), 2); | }), 2); | ||||
//获取爪子伸出退回到位 | |||||
GetStatus("M10.6", new Action<object>((objects) => | |||||
{ | |||||
if (objects is bool[] bools && bools.Length == 2) | |||||
{ | |||||
ml_morkf.PawOutComplete = bools[0]; | |||||
ml_morkf.PawInComplete = bools[1]; | |||||
} | |||||
}), 2); | |||||
//获取总初始化完成 | //获取总初始化完成 | ||||
GetStatus("M10.2", new Action<object>((objects) => | GetStatus("M10.2", new Action<object>((objects) => | ||||
{ | { | ||||
@@ -396,7 +407,6 @@ namespace BPASmartClient.MorkF | |||||
ActionManage.GetInstance.Register(PLCInite, "InitCommand"); | ActionManage.GetInstance.Register(PLCInite, "InitCommand"); | ||||
ActionManage.GetInstance.Register(StartOrder, "StartOrder"); | ActionManage.GetInstance.Register(StartOrder, "StartOrder"); | ||||
ActionManage.GetInstance.Register(StartOrderMain, "开始下单"); | ActionManage.GetInstance.Register(StartOrderMain, "开始下单"); | ||||
ActionManage.GetInstance.Register(StartLocalOrder, "StartLocalOrder"); | |||||
ActionManage.GetInstance.Register(StopLocalOrder, "StopLocalOrder"); | ActionManage.GetInstance.Register(StopLocalOrder, "StopLocalOrder"); | ||||
ActionManage.GetInstance.Register(new Action<object>((o) => | ActionManage.GetInstance.Register(new Action<object>((o) => | ||||
{ | { | ||||
@@ -478,8 +488,21 @@ namespace BPASmartClient.MorkF | |||||
GetDistance_3(); | GetDistance_3(); | ||||
}), "GetDistance_3"); | }), "GetDistance_3"); | ||||
}), "GetDistance_3"); | }), "GetDistance_3"); | ||||
ActionManage.GetInstance.Register(PawExtend, "PawTurnFront"); | |||||
ActionManage.GetInstance.Register(PawShrink, "PawTurnBack"); | |||||
ActionManage.GetInstance.Register(new Action(() => | |||||
{ | |||||
ThreadManage.GetInstance().Start(new Action(() => | |||||
{ | |||||
PawExtend(); | |||||
}), "PawTurnFront"); | |||||
}), "PawTurnFront"); | |||||
ActionManage.GetInstance.Register(new Action(() => | |||||
{ | |||||
ThreadManage.GetInstance().Start(new Action(() => | |||||
{ | |||||
PawShrink(); | |||||
}), "PawTurnBack"); | |||||
}), "PawTurnBack"); | |||||
ActionManage.GetInstance.Register(new Action<object>((list) => | ActionManage.GetInstance.Register(new Action<object>((list) => | ||||
{ | { | ||||
ThreadManage.GetInstance().Start(new Action(() => | ThreadManage.GetInstance().Start(new Action(() => | ||||
@@ -704,7 +727,7 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 本地菜单下单 | |||||
/// 根据菜品ID下单 | |||||
/// </summary> | /// </summary> | ||||
private void StartOrder(object o) | private void StartOrder(object o) | ||||
{ | { | ||||
@@ -728,44 +751,42 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 本地菜单下单 | |||||
/// 主界面本地菜单下单 | |||||
/// </summary> | /// </summary> | ||||
private void StartOrderMain(object o) | private void StartOrderMain(object o) | ||||
{ | { | ||||
if (o == null) return; | if (o == null) return; | ||||
if (o is string goodId) | |||||
{ | |||||
var res = LocalstirFryGoods?.FirstOrDefault(p => p.GoodsKey.ToString() == goodId);//匹配订单对应制作流程 | |||||
if (res != null) | |||||
{ | |||||
/* morkF.listStirBom.Add(res.StirFryBomInfo);*///添加订单制作流程 | |||||
if (StirFryGoodsQuenes.Count > 0) return; | |||||
StirFryGoodsQuenes.Enqueue(new OrderLocInfo() | |||||
{ | |||||
SuborderId = Guid.NewGuid().ToString(), | |||||
StirPotActions = res.StirPotActions, | |||||
GoodName = "本地菜品" | |||||
}); | |||||
MessageLog.GetInstance.Show($"添加本地订单{res.GoodsKey}"); | |||||
} | |||||
} | |||||
} | |||||
//if (o is FoodMenuModel good) | |||||
//{ | |||||
// NewStartLocalOrder(good.GoodName); | |||||
//} | |||||
private void StartLocalOrder() | |||||
{ | |||||
if (StirFryGoodsQuenes.Count > 0) return;//只能一个一个做 | |||||
if (Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Count > 0) | |||||
{ | |||||
StirFryGoodsQuenes.Enqueue(new OrderLocInfo() | |||||
{ | |||||
SuborderId = Guid.NewGuid().ToString(), | |||||
StirPotActions = Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions, | |||||
GoodName = "本地菜品" | |||||
}); | |||||
MessageLog.GetInstance.Show($"添加本地模拟的订单{Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey}"); | |||||
} | |||||
//if (o == null) return; | |||||
//if (o is string goodId) | |||||
//{ | |||||
// var res = LocalstirFryGoods?.FirstOrDefault(p => p.GoodsKey.ToString() == goodId);//匹配订单对应制作流程 | |||||
// if (res != null) | |||||
// { | |||||
// /* morkF.listStirBom.Add(res.StirFryBomInfo);*///添加订单制作流程 | |||||
// if (StirFryGoodsQuenes.Count > 0) return; | |||||
// StirFryGoodsQuenes.Enqueue(new OrderLocInfo() | |||||
// { | |||||
// SuborderId = Guid.NewGuid().ToString(), | |||||
// StirPotActions = res.StirPotActions, | |||||
// GoodName = "本地菜品" | |||||
// }); | |||||
// MessageLog.GetInstance.Show($"添加本地订单{res.GoodsKey}"); | |||||
// } | |||||
//} | |||||
} | } | ||||
/// <summary> | |||||
/// 本地配置的订单 | |||||
/// </summary> | |||||
/// <param name="materialName"></param> | |||||
private void NewStartLocalOrder(string materialName) | private void NewStartLocalOrder(string materialName) | ||||
{ | { | ||||
//if (StirFryGoodsQuenes.Count > 0) return;//只能一个一个做 | //if (StirFryGoodsQuenes.Count > 0) return;//只能一个一个做 | ||||
@@ -800,6 +821,7 @@ namespace BPASmartClient.MorkF | |||||
GoodName = materialName | GoodName = materialName | ||||
}); | }); | ||||
MessageLog.GetInstance.Show($"添加本地模拟的订单{Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey}"); | MessageLog.GetInstance.Show($"添加本地模拟的订单{Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey}"); | ||||
MessageBox.Show("下单成功"); | |||||
} | } | ||||
} | } | ||||
@@ -968,33 +990,54 @@ namespace BPASmartClient.MorkF | |||||
/// 爪子伸出 | /// 爪子伸出 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="o">电磁阀启停:true:启动。false:停止。</param> | /// <param name="o">电磁阀启停:true:启动。false:停止。</param> | ||||
public void PawExtend() | |||||
public bool PawExtend() | |||||
{ | { | ||||
if (!ml_morkf.InitialComplete) | if (!ml_morkf.InitialComplete) | ||||
{ | { | ||||
MessageLog.GetInstance.ShowEx("爪子伸出错误,菜品库未初始化"); | MessageLog.GetInstance.ShowEx("爪子伸出错误,菜品库未初始化"); | ||||
return; | |||||
return false; | |||||
} | } | ||||
Thread.Sleep(500); | |||||
MaterailLibrary_Write("M0.6", true); | MaterailLibrary_Write("M0.6", true); | ||||
//等待爪子伸出延时4s | |||||
Thread.Sleep(6000); | |||||
for (int i = 0; i < materialSleepCount && !ml_morkf.PawOutComplete; i++)//潘华小炒没有夹爪到位功能 | |||||
{ | |||||
Thread.Sleep(materialSleepTime); | |||||
if (i >= materialSleepCount - 1) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("爪子伸出超时"); | |||||
return false; | |||||
} | |||||
} | |||||
return true; | |||||
////等待爪子伸出延时4s | |||||
//Thread.Sleep(6000); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 爪子收缩 | /// 爪子收缩 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="o">电磁阀启停:true:启动。false:停止。</param> | /// <param name="o">电磁阀启停:true:启动。false:停止。</param> | ||||
public void PawShrink() | |||||
public bool PawShrink() | |||||
{ | { | ||||
if (!ml_morkf.InitialComplete) | if (!ml_morkf.InitialComplete) | ||||
{ | { | ||||
MessageLog.GetInstance.ShowEx("爪子伸出错误,菜品库未初始化"); | MessageLog.GetInstance.ShowEx("爪子伸出错误,菜品库未初始化"); | ||||
return; | |||||
return false; | |||||
} | } | ||||
MaterailLibrary_Write("M0.7", true); | MaterailLibrary_Write("M0.7", true); | ||||
Thread.Sleep(500); | |||||
for (int i = 0; i < materialSleepCount && !ml_morkf.PawInComplete; i++)//潘华小炒没有夹爪到位功能 | |||||
{ | |||||
Thread.Sleep(materialSleepTime); | |||||
if (i >= materialSleepCount - 1) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("爪子伸出超时"); | |||||
return false; | |||||
} | |||||
} | |||||
return true; | |||||
//等待爪子收缩延时4s | //等待爪子收缩延时4s | ||||
Thread.Sleep(6000); | |||||
//Thread.Sleep(6000); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 电磁阀启停 | /// 电磁阀启停 | ||||
@@ -1033,6 +1076,10 @@ namespace BPASmartClient.MorkF | |||||
Thread.Sleep(materialSleepTime); | Thread.Sleep(materialSleepTime); | ||||
if (i >= materialSleepCount - 1) | if (i >= materialSleepCount - 1) | ||||
{ | { | ||||
if (i == 10) | |||||
{ | |||||
MaterailLibrary_Write("M1.0", true); | |||||
} | |||||
MessageLog.GetInstance.ShowEx("爪子去到1号位超时"); | MessageLog.GetInstance.ShowEx("爪子去到1号位超时"); | ||||
return false; | return false; | ||||
} | } | ||||
@@ -1063,6 +1110,10 @@ namespace BPASmartClient.MorkF | |||||
Thread.Sleep(materialSleepTime); | Thread.Sleep(materialSleepTime); | ||||
if (i >= materialSleepCount - 1) | if (i >= materialSleepCount - 1) | ||||
{ | { | ||||
if (i == 10) | |||||
{ | |||||
MaterailLibrary_Write("M1.1", true); | |||||
} | |||||
MessageLog.GetInstance.ShowEx("爪子去到2号位超时"); | MessageLog.GetInstance.ShowEx("爪子去到2号位超时"); | ||||
return false; | return false; | ||||
} | } | ||||
@@ -1090,10 +1141,14 @@ namespace BPASmartClient.MorkF | |||||
for (int i = 0; i < materialSleepCount && !ml_morkf.PawArrivePortThree; i++) | for (int i = 0; i < materialSleepCount && !ml_morkf.PawArrivePortThree; i++) | ||||
{ | { | ||||
Thread.Sleep(materialSleepTime); | Thread.Sleep(materialSleepTime); | ||||
if(i == 30) | |||||
{ | |||||
MaterailLibrary_Write("M1.2", true); | |||||
} | |||||
if (i >= materialSleepCount - 1) | if (i >= materialSleepCount - 1) | ||||
{ | { | ||||
MessageLog.GetInstance.ShowEx("爪子去到3号位超时"); | MessageLog.GetInstance.ShowEx("爪子去到3号位超时"); | ||||
return false; | |||||
} | } | ||||
} | } | ||||
if (!ml_morkf.PawPositon_3) | if (!ml_morkf.PawPositon_3) | ||||
@@ -1243,6 +1298,12 @@ namespace BPASmartClient.MorkF | |||||
return false; | return false; | ||||
} | } | ||||
if (x>212000|| y >240000) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("机械臂移动超出范围"); | |||||
return false; | |||||
} | |||||
//取反 | //取反 | ||||
x = 0 - Math.Abs(x); | x = 0 - Math.Abs(x); | ||||
y = 0 - Math.Abs(y); | y = 0 - Math.Abs(y); | ||||
@@ -1285,7 +1346,7 @@ namespace BPASmartClient.MorkF | |||||
//MessageLog.GetInstance.Show("机械臂移动操作完成"); | //MessageLog.GetInstance.Show("机械臂移动操作完成"); | ||||
Thread.Sleep(500); | |||||
Thread.Sleep(300); | |||||
return true; | return true; | ||||
} | } | ||||
@@ -1374,9 +1435,9 @@ namespace BPASmartClient.MorkF | |||||
Thread.Sleep(1000); | Thread.Sleep(1000); | ||||
//获取传感器的距离,转换成坐标系的点 | //获取传感器的距离,转换成坐标系的点 | ||||
//int laserHigh = ml_morkf.LaserDistance; | |||||
int laserHigh = ml_morkf.LaserDistance; | |||||
int laserHigh = 400; | |||||
//秦工要求读取后置0 | //秦工要求读取后置0 | ||||
WriteDistance(0); | WriteDistance(0); | ||||
@@ -1396,7 +1457,7 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
//设置到传感器感应的距离处 | //设置到传感器感应的距离处 | ||||
if (!SetArmPosition(x, y)) | |||||
if (!SetArmPosition(x - moveX, y)) | |||||
{ | { | ||||
return false; | return false; | ||||
} | } | ||||
@@ -1414,7 +1475,11 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
//伸出爪子 | //伸出爪子 | ||||
PawExtend(); | |||||
if (!PawExtend()) | |||||
{ | |||||
return false; | |||||
} | |||||
//移动前开启电磁阀 | //移动前开启电磁阀 | ||||
Electromagnetism(new List<bool> { false }); | Electromagnetism(new List<bool> { false }); | ||||
@@ -1461,16 +1526,18 @@ namespace BPASmartClient.MorkF | |||||
return false; | return false; | ||||
} | } | ||||
WriteSpeed(50000); | |||||
WriteSpeed(50000);//移动速度 | |||||
//ThreadManage.GetInstance().Start(new Action(() => | //ThreadManage.GetInstance().Start(new Action(() => | ||||
//{ | //{ | ||||
// //收缩爪子 | // //收缩爪子 | ||||
// PawShrink(); | // PawShrink(); | ||||
//}), "GetMaterialPawShrink"); | //}), "GetMaterialPawShrink"); | ||||
PawShrink(); | |||||
//收缩爪子 | |||||
if (!PawShrink()) return false; | |||||
//判断炒锅是否可以放盒 | //判断炒锅是否可以放盒 | ||||
for (int i = 0; materialSleepCount > i && !morkFs[fryIndex].FryPot1_HOBTPut; i++) | |||||
for (int i = 0; materialSleepCount > i && !morkFs[fryNum].FryPot1_HOBTPut; i++) | |||||
{ | { | ||||
Thread.Sleep(materialSleepTime); | Thread.Sleep(materialSleepTime); | ||||
if (i >= materialSleepCount - 1) | if (i >= materialSleepCount - 1) | ||||
@@ -1520,8 +1587,12 @@ namespace BPASmartClient.MorkF | |||||
return false; | return false; | ||||
} | } | ||||
//伸出爪子 | //伸出爪子 | ||||
PawExtend(); | |||||
if (!PawExtend()) | |||||
{ | |||||
return false; | |||||
} | |||||
Thread.Sleep(300); | Thread.Sleep(300); | ||||
@@ -1530,7 +1601,7 @@ namespace BPASmartClient.MorkF | |||||
Thread.Sleep(300); | Thread.Sleep(300); | ||||
//收缩爪子 | //收缩爪子 | ||||
PawShrink(); | |||||
if (!PawShrink()) return false; | |||||
//设置到炒锅i出菜处 | //设置到炒锅i出菜处 | ||||
if (!SetArmPosition(x + materialToFryDistance, y)) | if (!SetArmPosition(x + materialToFryDistance, y)) | ||||
@@ -1578,10 +1649,13 @@ namespace BPASmartClient.MorkF | |||||
Electromagnetism(new List<bool> { true }); | Electromagnetism(new List<bool> { true }); | ||||
//爪子收回 | //爪子收回 | ||||
PawShrink(); | |||||
if (!PawShrink()) | |||||
{ | |||||
return false; | |||||
} | |||||
//爪子去2号点位 | //爪子去2号点位 | ||||
if(!PawToPoint2()) | |||||
if (!PawToPoint2()) | |||||
{ | { | ||||
return false; | return false; | ||||
} | } | ||||
@@ -1670,8 +1744,10 @@ namespace BPASmartClient.MorkF | |||||
Laser2CoordinateState laser2CoordinateState = LaserDistance2MaterialCount(distance, x, out boxCount); | Laser2CoordinateState laser2CoordinateState = LaserDistance2MaterialCount(distance, x, out boxCount); | ||||
if (laser2CoordinateState == Laser2CoordinateState.MaterialNormal) | if (laser2CoordinateState == Laser2CoordinateState.MaterialNormal) | ||||
{ | { | ||||
int compensateHeight = boxCount > 1 ? 500 : 0;//补偿高度,超过1层盒子增加补偿 | |||||
//盒子高度计算除去起始位置的那个盒子 | //盒子高度计算除去起始位置的那个盒子 | ||||
x_high = (boxCount - 1) * materialBoxHeight; | |||||
x_high = (boxCount - 1) * materialBoxHeight + compensateHeight; | |||||
} | } | ||||
return laser2CoordinateState; | return laser2CoordinateState; | ||||
@@ -1722,6 +1798,7 @@ namespace BPASmartClient.MorkF | |||||
if(heightDifferent < 0) | if(heightDifferent < 0) | ||||
{ | { | ||||
MessageLog.GetInstance.ShowEx($"菜品库检测{x}处的菜品量时,传感器获取的高度差为负数,请校准该层高度"); | MessageLog.GetInstance.ShowEx($"菜品库检测{x}处的菜品量时,传感器获取的高度差为负数,请校准该层高度"); | ||||
return Laser2CoordinateState.MaterialEmpty; ; | |||||
} | } | ||||
//盒子高度为45,但是需要考虑到误差,不足35,则认为为空 | //盒子高度为45,但是需要考虑到误差,不足35,则认为为空 | ||||
@@ -2216,11 +2293,7 @@ namespace BPASmartClient.MorkF | |||||
GoodsKey = item.GoodsKey, | GoodsKey = item.GoodsKey, | ||||
StirPotActions = OrderSort(item.StirPotActions), | StirPotActions = OrderSort(item.StirPotActions), | ||||
}); | }); | ||||
GlobalFoodMenu.LocalFoodMenus.Add(new FoodMenuModel | |||||
{ | |||||
GoodKey = item.GoodsKey.ToString(), | |||||
GoodName = "", | |||||
}); | |||||
} | } | ||||
} | } | ||||
@@ -2357,9 +2430,9 @@ namespace BPASmartClient.MorkF | |||||
/// </summary> | /// </summary> | ||||
/// <param name="subid"></param> | /// <param name="subid"></param> | ||||
/// <param name="oRDER_STATUS"></param> | /// <param name="oRDER_STATUS"></param> | ||||
private void OrderChange(string subid, ORDER_STATUS oRDER_STATUS) | |||||
private void OrderChange(string Id , string goodName, ORDER_STATUS oRDER_STATUS,int deviceId) | |||||
{ | { | ||||
EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { Status = oRDER_STATUS, SubOrderId = subid }); | |||||
EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { Status = oRDER_STATUS, GoodName = goodName,DeviceId = deviceId, SubOrderId =Id }); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -2405,7 +2478,7 @@ namespace BPASmartClient.MorkF | |||||
if (materialInfo != null) | if (materialInfo != null) | ||||
{ | { | ||||
//if | //if | ||||
if(Convert.ToInt32(materialInfo.Qty) - goodBatching.BatchingCount < 0) | |||||
if(System.Convert.ToInt32(materialInfo.Qty) - goodBatching.BatchingCount < 0) | |||||
{ | { | ||||
MessageLog.GetInstance.ShowEx($"{materialInfo.Name}不够,请更新菜品库,并点击检测"); | MessageLog.GetInstance.ShowEx($"{materialInfo.Name}不够,请更新菜品库,并点击检测"); | ||||
return; | return; | ||||
@@ -2487,13 +2560,14 @@ namespace BPASmartClient.MorkF | |||||
if (morkFs[i].AutoMode && morkFs[i].FryPot1_InitialComplete && ml_morkf.InitialComplete && | if (morkFs[i].AutoMode && morkFs[i].FryPot1_InitialComplete && ml_morkf.InitialComplete && | ||||
!morkFs[i].FryWorking)//炒锅在自动状态&&初始化完成&&菜品库初始化&&是否在炒菜中 | !morkFs[i].FryWorking)//炒锅在自动状态&&初始化完成&&菜品库初始化&&是否在炒菜中 | ||||
{ | { | ||||
Thread.Sleep(5000); | |||||
Thread.Sleep(4000); | |||||
lock(lock_MainProcessExcute) | lock(lock_MainProcessExcute) | ||||
{ | { | ||||
//待炒小炒队列出队列 | //待炒小炒队列出队列 | ||||
if (StirFryGoodsQuenes.TryDequeue(out var res)) | if (StirFryGoodsQuenes.TryDequeue(out var res)) | ||||
{ | { | ||||
OrderChange(res.SuborderId, res.GoodName, ORDER_STATUS.WAIT, DeviceId = i); | |||||
//设置当前炒制菜品 | //设置当前炒制菜品 | ||||
nowStirFryGood[i] = res; | nowStirFryGood[i] = res; | ||||
//炒锅工作状态置为正在工作中 | //炒锅工作状态置为正在工作中 | ||||
@@ -2519,7 +2593,7 @@ namespace BPASmartClient.MorkF | |||||
bool ret = true; | bool ret = true; | ||||
MessageLog.GetInstance.Show($"炒锅{i}开始炒制菜品{res.GoodName}"); | MessageLog.GetInstance.Show($"炒锅{i}开始炒制菜品{res.GoodName}"); | ||||
OrderChange(res.SuborderId, res.GoodName, ORDER_STATUS.COOKING, DeviceId = i); | |||||
morkFs[i].GoodName = res.GoodName; | morkFs[i].GoodName = res.GoodName; | ||||
Coordinate myCoordinate = new Coordinate(); | Coordinate myCoordinate = new Coordinate(); | ||||
@@ -2542,7 +2616,7 @@ namespace BPASmartClient.MorkF | |||||
//更新 | //更新 | ||||
morkFs[i].UpdateProcess(potActions); | morkFs[i].UpdateProcess(potActions); | ||||
switch (potActions.Actions) | switch (potActions.Actions) | ||||
{ | { | ||||
case nameof(StirFryPotActionEnum.加热开启): | case nameof(StirFryPotActionEnum.加热开启): | ||||
@@ -2608,6 +2682,16 @@ namespace BPASmartClient.MorkF | |||||
MessageLog.GetInstance.Show(potActions.Actions); | MessageLog.GetInstance.Show(potActions.Actions); | ||||
break; | break; | ||||
case nameof(StirFryPotActionEnum.取原料): | case nameof(StirFryPotActionEnum.取原料): | ||||
if(potActions.SeasoningLists[0].Loc == 1 || | |||||
potActions.SeasoningLists[0].Loc == 9 || | |||||
potActions.SeasoningLists[0].Loc == 10 || | |||||
potActions.SeasoningLists[0].Loc == 18 || | |||||
potActions.SeasoningLists[0].Loc == 19 || | |||||
potActions.SeasoningLists[0].Loc == 27 ) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("该取料位置禁止使用"); | |||||
return; | |||||
} | |||||
//炒锅取菜状态置为未取到 | //炒锅取菜状态置为未取到 | ||||
morkFs[i].GetMaterialComplete = false; | morkFs[i].GetMaterialComplete = false; | ||||
@@ -2678,7 +2762,7 @@ namespace BPASmartClient.MorkF | |||||
ret = OutFood(i, out error, true); | ret = OutFood(i, out error, true); | ||||
if(ret == false) | if(ret == false) | ||||
{ | { | ||||
alarmModel.Add(new AlarmModel() { AlarmTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), AlarmMs = error }); | |||||
alarmModel.Add(new BPA.Message.AlarmModel() { AlarmTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), AlarmMs = error }); | |||||
} | } | ||||
break; | break; | ||||
case nameof(StirFryPotActionEnum.炒制菜品): | case nameof(StirFryPotActionEnum.炒制菜品): | ||||
@@ -2696,7 +2780,7 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
if (ret == false) | if (ret == false) | ||||
{ | { | ||||
alarmModel.Add(new AlarmModel() { AlarmTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), AlarmMs = error }); | |||||
alarmModel.Add(new BPA.Message.AlarmModel() { AlarmTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), AlarmMs = error }); | |||||
} | } | ||||
MessageLog.GetInstance.Show(potActions.Actions); | MessageLog.GetInstance.Show(potActions.Actions); | ||||
break; | break; | ||||
@@ -2713,9 +2797,9 @@ namespace BPASmartClient.MorkF | |||||
Thread.Sleep(3000); | Thread.Sleep(3000); | ||||
//回原点位 | //回原点位 | ||||
StirArmGoOrigin(i); | StirArmGoOrigin(i); | ||||
OrderChange(res.SuborderId, res.GoodName, ORDER_STATUS.COMPLETED_COOK, DeviceId = i); | |||||
//同时只能允许有一个出餐 | //同时只能允许有一个出餐 | ||||
lock(lock_OutMeal) | |||||
lock (lock_OutMeal) | |||||
{ | { | ||||
//出餐启动 | //出餐启动 | ||||
OutMeal(i); | OutMeal(i); | ||||
@@ -2804,12 +2888,12 @@ namespace BPASmartClient.MorkF | |||||
if (batchingInfo == null) | if (batchingInfo == null) | ||||
{ | { | ||||
//为空就新增 | //为空就新增 | ||||
BatchingInfos.Add(new BatchingInfo() { BatchingCount = Convert.ToInt32(surplus.Qty) - stagingCount, BatchingLoc = surplus.Loc, BatchingId = surplus.Key }); | |||||
BatchingInfos.Add(new BatchingInfo() { BatchingCount = System.Convert.ToInt32(surplus.Qty) - stagingCount, BatchingLoc = surplus.Loc, BatchingId = surplus.Key }); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
batchingInfo.BatchingLoc = surplus.Loc; | batchingInfo.BatchingLoc = surplus.Loc; | ||||
batchingInfo.BatchingCount = Convert.ToInt32(surplus.Qty) - stagingCount; | |||||
batchingInfo.BatchingCount = System.Convert.ToInt32(surplus.Qty) - stagingCount; | |||||
} | } | ||||
} | } | ||||
Thread.Sleep(1000); | Thread.Sleep(1000); | ||||
@@ -0,0 +1,35 @@ | |||||
using AlibabaCloud.SDK.Iot20180120.Models; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Globalization; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Data; | |||||
namespace BPASmartClient.MorkF.Convert | |||||
{ | |||||
internal class PotActionToVisibilityConvert : IValueConverter | |||||
{ | |||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | |||||
{ | |||||
Visibility vs = Visibility.Collapsed; | |||||
if(value is string action) | |||||
{ | |||||
switch (action) | |||||
{ | |||||
case "": | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
return vs; | |||||
} | |||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | |||||
} |
@@ -35,6 +35,15 @@ namespace BPASmartClient.MorkF | |||||
/// </summary> | /// </summary> | ||||
public bool InitialComplete { get; set; } | public bool InitialComplete { get; set; } | ||||
/// <summary> | |||||
/// 爪子伸出到位 | |||||
/// </summary> | |||||
public bool PawOutComplete { get; set; } | |||||
/// <summary> | |||||
/// 爪子缩回到位 | |||||
/// </summary> | |||||
public bool PawInComplete { get; set; } | |||||
private bool _ArriveComplete = false; | private bool _ArriveComplete = false; | ||||
/// <summary> | /// <summary> | ||||
/// 定位到达,上升沿捕获需要特殊处理 | /// 定位到达,上升沿捕获需要特殊处理 | ||||
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkF.Model | |||||
{ | |||||
public class FoodMenuModel | |||||
{ | |||||
public string ID { get; set; } | |||||
public string FoodName { get; set; } | |||||
public Dictionary<int,int> FoodHouseMaterials { get; set; } = new Dictionary<int,int>(); | |||||
} | |||||
} |
@@ -87,7 +87,7 @@ namespace BPASmartClient.MorkF | |||||
foreach(MaterialInfo material in materials) | foreach(MaterialInfo material in materials) | ||||
{ | { | ||||
//surplus += int.Parse(material.Qty.ToString()); | //surplus += int.Parse(material.Qty.ToString()); | ||||
surplus += Convert.ToInt32(material.Qty); | |||||
surplus += System.Convert.ToInt32(material.Qty); | |||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
@@ -55,16 +55,16 @@ | |||||
<TextBlock Text="菜单编号:" Margin="10,0"/> | <TextBlock Text="菜单编号:" Margin="10,0"/> | ||||
<TextBox Text="{Binding FoodMenuID}" Width="100"/> | <TextBox Text="{Binding FoodMenuID}" Width="100"/> | ||||
<Button Content="下单" Margin="10,0" Command="{Binding StartOrder}" Cursor="Hand"/> | |||||
<Button Content="本地模拟流程配置" Click="Button_Click"/> | |||||
<Button Content="本地模拟流程下单" Margin="10,0" Command="{Binding StartLocalOrder}" Cursor="Hand"/> | |||||
<Button Content="菜单编号下单下单" Margin="10,0" Command="{Binding StartOrder}" Cursor="Hand"/> | |||||
<Button Content="本地菜单流程配置" Click="Button_Click"/> | |||||
<Button Content="停止炒菜" Margin="10,0" Command="{Binding StopLocalOrder}" Cursor="Hand"/> | <Button Content="停止炒菜" Margin="10,0" Command="{Binding StopLocalOrder}" Cursor="Hand"/> | ||||
<Button Content="{Binding ModeButten}" Margin="10,0" Command="{Binding ModeChange}" Cursor="Hand"/> | |||||
<Button Content="{Binding ModeButten}" Margin="10,0" Command="{Binding ModeChange}" Cursor="Hand"/> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
</GroupBox> | </GroupBox> | ||||
<GroupBox Header="菜品选择" FontSize="15" Foreground="Aqua" Grid.Row="2" VerticalAlignment="Center" Height="190" > | |||||
<!--<GroupBox Header="菜品选择" FontSize="15" Foreground="Aqua" Grid.Row="2" VerticalAlignment="Center" Height="190" > | |||||
<Grid > | <Grid > | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="*"/> | <RowDefinition Height="*"/> | ||||
@@ -127,7 +127,7 @@ | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
</GroupBox> | |||||
</GroupBox>--> | |||||
<StackPanel Orientation="Vertical" Grid.Row="3"> | <StackPanel Orientation="Vertical" Grid.Row="3"> | ||||
<GroupBox Header="配料仓控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="65"> | <GroupBox Header="配料仓控制" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" Height="65"> | ||||
<WrapPanel Orientation="Horizontal" Grid.RowSpan="2" VerticalAlignment="Top" Margin="0,5,0,0" > | <WrapPanel Orientation="Horizontal" Grid.RowSpan="2" VerticalAlignment="Top" Margin="0,5,0,0" > | ||||
@@ -7,61 +7,102 @@ | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkF.View" | xmlns:local="clr-namespace:BPASmartClient.MorkF.View" | ||||
xmlns:vm="clr-namespace:BPASmartClient.MorkF.ViewModel" | xmlns:vm="clr-namespace:BPASmartClient.MorkF.ViewModel" | ||||
mc:Ignorable="d" | mc:Ignorable="d" | ||||
Title="LocalMenu" Height="800" Width="800" WindowStartupLocation="CenterScreen" WindowStyle="None" AllowsTransparency="True" MouseLeftButtonDown="Window_MouseLeftButtonDown"> | |||||
Title="LocalMenu" Height="900" Width="800" WindowStartupLocation="CenterScreen" WindowStyle="None" AllowsTransparency="True" MouseLeftButtonDown="Window_MouseLeftButtonDown" Background="Gray" | |||||
> | |||||
<Window.DataContext> | <Window.DataContext> | ||||
<vm:LocalMenuViewModel/> | <vm:LocalMenuViewModel/> | ||||
</Window.DataContext> | </Window.DataContext> | ||||
<Window.Resources> | <Window.Resources> | ||||
<Style TargetType="ListBoxItem" > | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="{x:Type ListBoxItem}"> | |||||
<Border BorderBrush="Black" BorderThickness="0" Background="White"> | |||||
<Grid Width="600" HorizontalAlignment="Center" VerticalAlignment="Center" > | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition Width="2*"/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBox Grid.Column="0" Text="{Binding FryTime}" HorizontalAlignment="Center" VerticalAlignment="Center" /> | |||||
<TextBox Grid.Column="1" Text="{Binding During}" Margin="10,0"/> | |||||
<ComboBox Grid.Column="2" Width="120" ItemsSource="{Binding DataContext.strPotActions , RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" /> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" /> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
<Style TargetType="ListBoxItem" x:Key="newFoodList" > | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="{x:Type ListBoxItem}"> | |||||
<Border BorderBrush="Black" BorderThickness="0" Background="Transparent" Margin="5"> | |||||
<StackPanel Orientation="Vertical"> | |||||
<TextBlock Text="步骤:"/> | |||||
<TextBox Text="{Binding FryTime}" HorizontalAlignment="Center" VerticalAlignment="Center" /> | |||||
<ComboBox Width="120" ItemsSource="{Binding DataContext.strPotActions , RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | |||||
SelectedValue="{Binding Actions}" Margin="10,0"/> | SelectedValue="{Binding Actions}" Margin="10,0"/> | ||||
<TextBox Grid.Column="3" Text="{Binding SeasoningLists[0].Loc}" Margin="10,0"/> | |||||
<TextBox Grid.Column="4" Text="{Binding SeasoningLists[0].Qty}" Margin="10,0"/> | |||||
<Button Grid.Column="5" Content="删除" Margin="10,0" HorizontalAlignment="Center" | |||||
<TextBlock Text="时间"/> | |||||
<TextBox Text="{Binding During}" Margin="10,0"/> | |||||
<TextBox Text="{Binding SeasoningLists[0].Loc}" Margin="10,0"/> | |||||
<TextBox Text="{Binding SeasoningLists[0].Qty}" Margin="10,0"/> | |||||
<Button Content="删除" Margin="10,0" HorizontalAlignment="Center"/> | |||||
</StackPanel> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
<Style TargetType="ListBoxItem" > | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="{x:Type ListBoxItem}"> | |||||
<Border BorderBrush="Black" BorderThickness="0" Background="Transparent" Margin="5"> | |||||
<Grid Width="600" HorizontalAlignment="Center" VerticalAlignment="Center" > | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition Width="2*"/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBox Grid.Column="0" Text="{Binding FryTime}" HorizontalAlignment="Center" VerticalAlignment="Center" /> | |||||
<TextBox Grid.Column="1" Text="{Binding During}" Margin="10,0"/> | |||||
<ComboBox Grid.Column="2" Width="120" ItemsSource="{Binding DataContext.strPotActions , RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | |||||
SelectedValue="{Binding Actions}" Margin="10,0"/> | |||||
<TextBox Grid.Column="3" Text="{Binding SeasoningLists[0].Loc}" Margin="10,0"/> | |||||
<TextBox Grid.Column="4" Text="{Binding SeasoningLists[0].Qty}" Margin="10,0"/> | |||||
<Button Grid.Column="5" Content="删除" Margin="10,0" HorizontalAlignment="Center" | |||||
Command="{Binding DataContext.Delete, RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | Command="{Binding DataContext.Delete, RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | ||||
CommandParameter="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBoxItem,Mode=FindAncestor}}"/> | CommandParameter="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBoxItem,Mode=FindAncestor}}"/> | ||||
</Grid> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
</Grid> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</Window.Resources> | </Window.Resources> | ||||
<Grid> | |||||
<Grid > | |||||
<Grid.Background> | |||||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/窗体样式/From/内部背景.png"/> | |||||
</Grid.Background> | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="50"/> | |||||
<RowDefinition Height="80"/> | |||||
<RowDefinition Height="80"/> | |||||
<RowDefinition Height="50"/> | <RowDefinition Height="50"/> | ||||
<RowDefinition Height="*"/> | <RowDefinition Height="*"/> | ||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<ComboBox Name="Materials" SelectionChanged="Materials_SelectionChanged" ItemsSource="{Binding MaterialNames}" HorizontalAlignment="Center" VerticalAlignment="Center"/> | |||||
<StackPanel Margin="10,20,10,0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<TextBox Text="{Binding MaterialName}" Width="80" Height="40" Margin="10,0"/> | <TextBox Text="{Binding MaterialName}" Width="80" Height="40" Margin="10,0"/> | ||||
<Button Content="增加菜谱" Command="{Binding AddMaterial}" Width="80" Height="40" Margin="10,0"/> | <Button Content="增加菜谱" Command="{Binding AddMaterial}" Width="80" Height="40" Margin="10,0"/> | ||||
<Button Content="下单" Command="{Binding NewStartLocalMaterial}" Width="80" Height="40" Margin="10,0"/> | |||||
<!--<Button Content="菜谱重命名" Command="{Binding RenameMaterial}" Width="80" Height="40" Margin="10,0"/> | |||||
<Button Content="删除菜谱" Command="{Binding DeleteMaterial}" Width="80" Height="40" Margin="10,0"/>--> | |||||
</StackPanel> | |||||
<StackPanel Grid.Row="1" Margin="10,20,10,0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<ComboBox Name="Materials" Width="100" Height="40" SelectionChanged="Materials_SelectionChanged" SelectedIndex="0" IsReadOnly="True" | |||||
ItemsSource="{Binding MaterialNames}" SelectedItem="{Binding SelectMaterialName}" HorizontalAlignment="Center" VerticalAlignment="Center"/> | |||||
<!--<Button Content="下单" Command="{Binding NewStartLocalMaterial}" Width="80" Height="40" Margin="10,0" Cursor="Hand"/>--> | |||||
<!--<Button Content="菜谱重命名" Command="{Binding RenameMaterial}" Width="80" Height="40" Margin="10,0"/>--> | |||||
<Button Content="删除菜谱" Command="{Binding DeleteMaterial}" Width="80" Height="40" Margin="10,0"/> | |||||
<Button Content="增加步骤" Command="{Binding AddFryTime}" Width="80" Height="40" Margin="10,0"/> | <Button Content="增加步骤" Command="{Binding AddFryTime}" Width="80" Height="40" Margin="10,0"/> | ||||
<Button Content="保存" Command="{Binding Save}" Width="80" Height="40" Margin="10,0"/> | <Button Content="保存" Command="{Binding Save}" Width="80" Height="40" Margin="10,0"/> | ||||
<Button Content="退出" Click="Button_Click" Width="80" Height="40" Margin="10,0"/> | <Button Content="退出" Click="Button_Click" Width="80" Height="40" Margin="10,0"/> | ||||
</StackPanel> | </StackPanel> | ||||
<Grid Grid.Row="1" Width="600" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Grid Grid.Row="2" Width="600" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition/> | <ColumnDefinition/> | ||||
<ColumnDefinition/> | <ColumnDefinition/> | ||||
@@ -77,9 +118,9 @@ | |||||
<TextBlock Grid.Column="4" Text="调料重量" HorizontalAlignment="Center"/> | <TextBlock Grid.Column="4" Text="调料重量" HorizontalAlignment="Center"/> | ||||
<TextBlock Grid.Column="5" Text="删除" HorizontalAlignment="Center"/> | <TextBlock Grid.Column="5" Text="删除" HorizontalAlignment="Center"/> | ||||
</Grid> | </Grid> | ||||
<ListBox x:Name="listview1" Grid.Row="2" BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Center" AllowDrop="True" | |||||
<ListBox x:Name="listview1" Grid.Row="3" BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Center" AllowDrop="True" | |||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding PotActionStep}" Margin=" 10" Background="Transparent" | ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding PotActionStep}" Margin=" 10" Background="Transparent" | ||||
ItemContainerStyle="{DynamicResource newFoodList}" | |||||
> | > | ||||
</ListBox> | </ListBox> | ||||
@@ -233,7 +233,7 @@ namespace BPASmartClient.MorkF.View | |||||
private void Materials_SelectionChanged(object sender, SelectionChangedEventArgs e) | private void Materials_SelectionChanged(object sender, SelectionChangedEventArgs e) | ||||
{ | { | ||||
string str = Materials.SelectedValue.ToString(); | |||||
string str = Materials.SelectedValue?.ToString(); | |||||
if(str != string.Empty) | if(str != string.Empty) | ||||
{ | { | ||||
ActionManage.GetInstance.Send("LoacMenuSelectMaterial", str); | ActionManage.GetInstance.Send("LoacMenuSelectMaterial", str); | ||||
@@ -82,6 +82,10 @@ | |||||
<Grid> | <Grid> | ||||
<ScrollViewer> | <ScrollViewer> | ||||
<Grid> | <Grid> | ||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition Width="0.4*"/> | |||||
</Grid.ColumnDefinitions> | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | <RowDefinition></RowDefinition> | ||||
<RowDefinition></RowDefinition> | <RowDefinition></RowDefinition> | ||||
@@ -627,7 +631,7 @@ | |||||
<TextBlock Text="x轴:" Margin="10,0"/> | <TextBlock Text="x轴:" Margin="10,0"/> | ||||
<TextBox Grid.Column="1" Text="{Binding TwentySixX}" Width="100"/> | <TextBox Grid.Column="1" Text="{Binding TwentySixX}" Width="100"/> | ||||
<TextBlock Grid.Column="2" Text="Y轴:" Margin="10,0"/> | <TextBlock Grid.Column="2" Text="Y轴:" Margin="10,0"/> | ||||
<TextBox Grid.Column="3" Text="{Binding SeventeenY}" Width="100"/> | |||||
<TextBox Grid.Column="3" Text="{Binding TwentySixY}" Width="100"/> | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
<Grid> | <Grid> | ||||
@@ -657,6 +661,8 @@ | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="*"/> | <RowDefinition Height="*"/> | ||||
<RowDefinition Height="*"/> | <RowDefinition Height="*"/> | ||||
<RowDefinition Height="*"/> | |||||
<RowDefinition Height="*"/> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<WrapPanel> | <WrapPanel> | ||||
<Grid> | <Grid> | ||||
@@ -725,6 +731,7 @@ | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="1*"/> | <RowDefinition Height="1*"/> | ||||
<RowDefinition Height="1*"/> | <RowDefinition Height="1*"/> | ||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<RadioButton Content="第二层菜品库出菜位置" Margin="5,0" IsEnabled="True" IsChecked="{Binding PositionMaterialTwo}" GroupName="MaterialPosition" HorizontalAlignment="Center"/> | <RadioButton Content="第二层菜品库出菜位置" Margin="5,0" IsEnabled="True" IsChecked="{Binding PositionMaterialTwo}" GroupName="MaterialPosition" HorizontalAlignment="Center"/> | ||||
<Grid Grid.Row="1"> | <Grid Grid.Row="1"> | ||||
@@ -740,6 +747,7 @@ | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="1*"/> | <RowDefinition Height="1*"/> | ||||
<RowDefinition Height="1*"/> | <RowDefinition Height="1*"/> | ||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<RadioButton Content="第三层菜品库出菜位置" Margin="5,0" IsEnabled="True" IsChecked="{Binding PositionMaterialThree}" GroupName="MaterialPosition" HorizontalAlignment="Center"/> | <RadioButton Content="第三层菜品库出菜位置" Margin="5,0" IsEnabled="True" IsChecked="{Binding PositionMaterialThree}" GroupName="MaterialPosition" HorizontalAlignment="Center"/> | ||||
<Grid Grid.Row="1"> | <Grid Grid.Row="1"> | ||||
@@ -749,56 +757,91 @@ | |||||
<TextBlock Grid.Column="2" Text="Y轴:" Margin="10,0"/> | <TextBlock Grid.Column="2" Text="Y轴:" Margin="10,0"/> | ||||
<TextBox Grid.Column="3" Text="0" IsEnabled="False" Width="100"/> | <TextBox Grid.Column="3" Text="0" IsEnabled="False" Width="100"/> | ||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="2" Margin="10,10"> | |||||
<Button Content="感应器1标准位置" Margin="10,0,10,0" Command="{Binding GetDistance_1}" Cursor="Hand"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_1}" Margin="10,0,10,0" Width="100"/> | |||||
<Button Content="感应器2标准位置" Margin="10,0,10,0" Command="{Binding GetDistance_2}"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_2}" Margin="10,0,10,0" Width="100"/> | |||||
<Button Content="感应器3标准位置" Margin="10,0,10,0" Command="{Binding GetDistance_3}"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_3}" Margin="10,0,10,0" Width="100"/> | |||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="3"> | |||||
<Button Content="全部位置保存" Margin="10,0,50,0" Height="40" Command="{Binding SaveCoordinate}" Cursor="Hand"/> | |||||
<Button Content="全部位置读取" Height="40" Command="{Binding ReadCoordinate}"/> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
</GroupBox> | </GroupBox> | ||||
<GroupBox Grid.Row="4" Header="操作" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" > | |||||
<Grid > | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="1*"/> | |||||
<RowDefinition Height="1*"/> | |||||
<RowDefinition Height="1*"/> | |||||
<RowDefinition Height="1*"/> | |||||
</Grid.RowDefinitions> | |||||
<WrapPanel> | |||||
<GroupBox Grid.Row="0" Grid.RowSpan="3" Grid.Column="1" Header="操作" FontSize="15" Foreground="Aqua" VerticalAlignment="Center" > | |||||
<StackPanel > | |||||
<WrapPanel Margin="10,10"> | |||||
<Button Content="菜品库初始化" Margin="10,0,5,0" Command="{Binding FoodLibInit}"/> | <Button Content="菜品库初始化" Margin="10,0,5,0" Command="{Binding FoodLibInit}"/> | ||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="1" Margin="10,10"> | |||||
<Button Content="电磁阀启动" Margin="10,0,5,0" Command="{Binding StartElectromagnetism}"/> | <Button Content="电磁阀启动" Margin="10,0,5,0" Command="{Binding StartElectromagnetism}"/> | ||||
<Button Content="电磁阀停止" Margin="10,0,5,0" Command="{Binding StopElectromagnetism}"/> | <Button Content="电磁阀停止" Margin="10,0,5,0" Command="{Binding StopElectromagnetism}"/> | ||||
<Button Content="夹爪伸出" Command="{Binding PawTurnFront}" Margin="5,0" Cursor="Hand"/> | |||||
<Button Content="夹爪收缩" Command="{Binding PawTurnBack}" Margin="5,0" Cursor="Hand"/> | |||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="2" Margin="10,10"> | |||||
<Button Content="夹爪伸出" Command="{Binding PawTurnFront}" Margin="10,0,5,0" Cursor="Hand"/> | |||||
<Button Content="夹爪收缩" Command="{Binding PawTurnBack}" Margin="10,0,5,0" Cursor="Hand"/> | |||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="3" Margin="10,10"> | |||||
<TextBlock Text="夹爪位置:" Margin="10,0,5,0" /> | |||||
<RadioButton Content="位置1" Margin="5,0" IsEnabled="True" IsChecked="{Binding PawPositon1}" Command="{Binding PawToPoint1}" GroupName="PawTurn"/> | <RadioButton Content="位置1" Margin="5,0" IsEnabled="True" IsChecked="{Binding PawPositon1}" Command="{Binding PawToPoint1}" GroupName="PawTurn"/> | ||||
<RadioButton Content="位置2" Margin="5,0" IsEnabled="True" IsChecked="{Binding PawPositon2}" Command="{Binding PawToPoint2}" GroupName="PawTurn"/> | <RadioButton Content="位置2" Margin="5,0" IsEnabled="True" IsChecked="{Binding PawPositon2}" Command="{Binding PawToPoint2}" GroupName="PawTurn"/> | ||||
<RadioButton Content="位置3" Margin="5,0 " IsEnabled="True" IsChecked="{Binding PawPositon3}" Command="{Binding PawToPoint3}" GroupName="PawTurn"/> | <RadioButton Content="位置3" Margin="5,0 " IsEnabled="True" IsChecked="{Binding PawPositon3}" Command="{Binding PawToPoint3}" GroupName="PawTurn"/> | ||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="1"> | |||||
<Button Content="感应器1测距" Margin="5,0" Command="{Binding GetDistance_1}" Cursor="Hand"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_1}" Width="100"/> | |||||
<Button Content="感应器2测距" Margin="5,0" Command="{Binding GetDistance_2}"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_2}" Width="100"/> | |||||
<Button Content="感应器3测距" Margin="5,0" Command="{Binding GetDistance_3}"/> | |||||
<TextBox Grid.Column="1" Text="{Binding Distance_3}" Width="100"/> | |||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="2"> | |||||
<TextBlock Text="移动系数:"></TextBlock> | |||||
<WrapPanel Grid.Row="4" Margin="10,10"> | |||||
<TextBlock Text="移动系数:" Margin="10,0,0,0"></TextBlock> | |||||
<TextBox | <TextBox | ||||
Style="{DynamicResource UserTextBoxStyle}" | |||||
Foreground="#a2c2e8" Text="{Binding Str}"/> | |||||
<TextBlock Text="移动方式:" Margin="50,0,0,0"></TextBlock> | |||||
Style="{DynamicResource UserTextBoxStyle}" | |||||
Foreground="#a2c2e8" Text="{Binding Str}"/> | |||||
</WrapPanel> | |||||
<WrapPanel Grid.Row="5" Margin="10,10"> | |||||
<TextBlock Text="移动方式:" Margin="10,0,0,0"></TextBlock> | |||||
<RadioButton Content="上" Margin="5,0" IsChecked="{Binding Up}" GroupName="ArmRun"/> | <RadioButton Content="上" Margin="5,0" IsChecked="{Binding Up}" GroupName="ArmRun"/> | ||||
<RadioButton Content="下" Margin="5,0" IsChecked="{Binding Down}" GroupName="ArmRun"/> | <RadioButton Content="下" Margin="5,0" IsChecked="{Binding Down}" GroupName="ArmRun"/> | ||||
<RadioButton Content="左" Margin="5,0 " IsChecked="{Binding Left}" GroupName="ArmRun"/> | <RadioButton Content="左" Margin="5,0 " IsChecked="{Binding Left}" GroupName="ArmRun"/> | ||||
<RadioButton Content="右" Margin="5,0 " IsChecked="{Binding Right}" GroupName="ArmRun"/> | <RadioButton Content="右" Margin="5,0 " IsChecked="{Binding Right}" GroupName="ArmRun"/> | ||||
<RadioButton Content="定点" Margin="5,0 " IsChecked="{Binding Point}" GroupName="ArmRun"/> | <RadioButton Content="定点" Margin="5,0 " IsChecked="{Binding Point}" GroupName="ArmRun"/> | ||||
<Button Content="移动" Command="{Binding SetNowPosition}"/> | <Button Content="移动" Command="{Binding SetNowPosition}"/> | ||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="3" Cursor=""> | |||||
<Button Content="自动计算" Margin="20,0,50,0" Command="{Binding AutoCalculation}"/> | |||||
<Button Content="保存" Margin="20,0,50,0" Command="{Binding SaveCoordinate}"/> | |||||
<Button Content="读取" Command="{Binding ReadCoordinate}"/> | |||||
<WrapPanel Grid.Row="6" Margin="10,10"> | |||||
<Button Content="自动计算" Margin="10,0,50,0" Command="{Binding AutoCalculation}"/> | |||||
</WrapPanel > | |||||
<WrapPanel Grid.Row="7" Margin="10,10"> | |||||
<TextBlock Text="取料手臂设定位置" Margin="10,0,10,10"/> | |||||
<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" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | |||||
<!--<WrapPanel Margin="10"> | |||||
<Button Content="感应器1测距" Margin="5,0" Command="{Binding GetTestDistance_1}" Cursor="Hand"/> | |||||
<TextBox Text="{Binding SensingDistance_1}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||||
<Button Content="感应器2测距" Margin="5,0" Command="{Binding GetTestDistance_2}"/> | |||||
<TextBox Text="{Binding SensingDistance_2}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||||
<Button Content="感应器3测距" Margin="5,0" Command="{Binding GetTestDistance_3}"/> | |||||
<TextBox Text="{Binding SensingDistance_3}" Margin="5,0" Width="60" IsReadOnly="True"/> | |||||
</WrapPanel>--> | |||||
</StackPanel> | |||||
</GroupBox> | </GroupBox> | ||||
</Grid> | </Grid> | ||||
</ScrollViewer> | </ScrollViewer> | ||||
@@ -33,7 +33,7 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
public RelayCommand FoodPlcInite { get; set; } | public RelayCommand FoodPlcInite { get; set; } | ||||
public RelayCommand Plc1Reset { get; set; } | public RelayCommand Plc1Reset { get; set; } | ||||
public RelayCommand StartOrder { get; set; } | public RelayCommand StartOrder { get; set; } | ||||
public RelayCommand StartLocalOrder { get; set; } | |||||
public RelayCommand StopLocalOrder { get; set; } | public RelayCommand StopLocalOrder { get; set; } | ||||
public RelayCommand ModeChange { get; set; } | public RelayCommand ModeChange { get; set; } | ||||
@@ -205,7 +205,6 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | ||||
Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); | Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); | ||||
StartOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartOrder", FoodMenuID); }); | StartOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartOrder", FoodMenuID); }); | ||||
StartLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartLocalOrder"); }); | |||||
StopLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StopLocalOrder"); }); | StopLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StopLocalOrder"); }); | ||||
ModeChange = new RelayCommand(() => { | ModeChange = new RelayCommand(() => { | ||||
ActionManage.GetInstance.Send("ModeChange"); | ActionManage.GetInstance.Send("ModeChange"); | ||||
@@ -1,6 +1,9 @@ | |||||
using BPA.Models; | using BPA.Models; | ||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Model; | |||||
using BPASmartClient.Model.小炒机; | |||||
using BPASmartClient.MorkF.Model; | using BPASmartClient.MorkF.Model; | ||||
using BPASmartClient.ViewModel; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using Microsoft.Toolkit.Mvvm.Input; | using Microsoft.Toolkit.Mvvm.Input; | ||||
using System; | using System; | ||||
@@ -17,20 +20,33 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
partial class LocalMenuViewModel:ObservableObject | partial class LocalMenuViewModel:ObservableObject | ||||
{ | { | ||||
/// <summary> | |||||
/// 单个菜品流程 | |||||
/// </summary> | |||||
public ObservableCollection<PotActions> PotActionStep { get { return _PotActionStep; } | public ObservableCollection<PotActions> PotActionStep { get { return _PotActionStep; } | ||||
set { _PotActionStep = value; OnPropertyChanged(); } } | set { _PotActionStep = value; OnPropertyChanged(); } } | ||||
private ObservableCollection<PotActions> _PotActionStep = new ObservableCollection<PotActions>(); | private ObservableCollection<PotActions> _PotActionStep = new ObservableCollection<PotActions>(); | ||||
public string MaterialName { get; set; } | public string MaterialName { get; set; } | ||||
public string SelectMaterialName { get; set; } | |||||
/// <summary> | |||||
/// 选中的菜品 | |||||
/// </summary> | |||||
public string SelectMaterialName { get { return _selectMaterialName; } set { _selectMaterialName = value; OnPropertyChanged(); } } | |||||
private string _selectMaterialName; | |||||
/// <summary> | |||||
/// 菜品combox集合 | |||||
/// </summary> | |||||
public ObservableCollection<string> MaterialNames { get; set; } = new ObservableCollection<string>(); | public ObservableCollection<string> MaterialNames { get; set; } = new ObservableCollection<string>(); | ||||
/// <summary> | |||||
/// 动作名称combox集合 | |||||
/// </summary> | |||||
public ObservableCollection<string> strPotActions { get; set; } = new ObservableCollection<string>(); | public ObservableCollection<string> strPotActions { get; set; } = new ObservableCollection<string>(); | ||||
public MaterialAndFryingTime materialAndFryingTime { get; set; } = new MaterialAndFryingTime(); | |||||
/// <summary> | |||||
/// 全部菜品流程集合 | |||||
/// </summary> | |||||
public MaterialAndFryingTime materialAndFryingTime { get; set; } = Json<MaterialAndFryingTime>.Data; | |||||
public RelayCommand<object> Delete { get; set; } | public RelayCommand<object> Delete { get; set; } | ||||
public RelayCommand AddFryTime { get; set; } | public RelayCommand AddFryTime { get; set; } | ||||
@@ -106,34 +122,33 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
else | else | ||||
{ | { | ||||
MaterialNames.Add(MaterialName); | MaterialNames.Add(MaterialName); | ||||
SelectMaterialName = MaterialName; | |||||
} | } | ||||
}); | }); | ||||
DeleteMaterial = new RelayCommand(() => | DeleteMaterial = new RelayCommand(() => | ||||
{ | { | ||||
//尝试是否能找到 | |||||
if (MaterialNames.FirstOrDefault(o => o == SelectMaterialName) == SelectMaterialName) | |||||
if (materialAndFryingTime.materials.ContainsKey(SelectMaterialName)) | |||||
{ | { | ||||
MaterialNames.Remove(SelectMaterialName); | |||||
if(materialAndFryingTime.materials.ContainsKey(SelectMaterialName)) | |||||
{ | |||||
materialAndFryingTime.materials.Remove(SelectMaterialName); | |||||
} | |||||
} | |||||
}); | |||||
RenameMaterial = new RelayCommand(() => | |||||
{ | |||||
//尝试是否能找到 | |||||
if (MaterialNames.FirstOrDefault(o => o == SelectMaterialName) == SelectMaterialName) | |||||
{ | |||||
MaterialNames.Remove(SelectMaterialName); | |||||
MaterialNames.Add(MaterialName); | |||||
if (materialAndFryingTime.materials.ContainsKey(SelectMaterialName)) | |||||
{ | |||||
materialAndFryingTime.materials.Add(MaterialName, materialAndFryingTime.materials[SelectMaterialName]); | |||||
materialAndFryingTime.materials.Remove(SelectMaterialName); | |||||
} | |||||
materialAndFryingTime.materials.Remove(SelectMaterialName); | |||||
} | } | ||||
MaterialNames.Remove(SelectMaterialName); | |||||
PotActionStep.Clear(); | |||||
}); | }); | ||||
//RenameMaterial = new RelayCommand(() => | |||||
//{ | |||||
// //尝试是否能找到 | |||||
// if (MaterialNames.FirstOrDefault(o => o == SelectMaterialName) == SelectMaterialName) | |||||
// { | |||||
// MaterialNames.Remove(SelectMaterialName); | |||||
// MaterialNames.Add(MaterialName); | |||||
// if (materialAndFryingTime.materials.ContainsKey(SelectMaterialName)) | |||||
// { | |||||
// materialAndFryingTime.materials.Add(MaterialName, materialAndFryingTime.materials[SelectMaterialName]); | |||||
// materialAndFryingTime.materials.Remove(SelectMaterialName); | |||||
// } | |||||
// } | |||||
//}); | |||||
Save = new RelayCommand(new Action(() => | Save = new RelayCommand(new Action(() => | ||||
{ | { | ||||
if(PotActionStep.Count > 0) | if(PotActionStep.Count > 0) | ||||
@@ -155,8 +170,9 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
//Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey = 11; | //Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey = 11; | ||||
//Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions = new List<PotActions>(PotActionStep); | //Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions = new List<PotActions>(PotActionStep); | ||||
//Json<LocalPotStep>.Save(); | //Json<LocalPotStep>.Save(); | ||||
Json<MaterialAndFryingTime>.Data.materials = materialAndFryingTime.materials; | |||||
//Json<MaterialAndFryingTime>.Data.materials = materialAndFryingTime.materials; | |||||
Json<MaterialAndFryingTime>.Save(); | Json<MaterialAndFryingTime>.Save(); | ||||
//ActionManage.GetInstance.Send("LocalMenuClose"); | //ActionManage.GetInstance.Send("LocalMenuClose"); | ||||
})); | })); | ||||
@@ -209,8 +225,5 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
} | } | ||||
} | } | ||||
partial class MaterialAndFryingTime | |||||
{ | |||||
public Dictionary<string, ObservableCollection<PotActions>> materials { get; set; } = new Dictionary<string, ObservableCollection<PotActions>>(); | |||||
} | |||||
} | } |
@@ -280,6 +280,30 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
private int _Distance_2; | private int _Distance_2; | ||||
public int Distance_3 { get { return _Distance_3; } set { _Distance_3 = value; OnPropertyChanged(); } } | public int Distance_3 { get { return _Distance_3; } set { _Distance_3 = value; OnPropertyChanged(); } } | ||||
private int _Distance_3; | private int _Distance_3; | ||||
#endregion | |||||
#region 控制 | |||||
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 int SensingDistance_1 { get { return _sensingDistance_1; } set { _sensingDistance_1 = value; OnPropertyChanged(); } } | |||||
private int _sensingDistance_1; | |||||
public int SensingDistance_2 { get { return _sensingDistance_2; } set { _sensingDistance_2 = value; OnPropertyChanged(); } } | |||||
private int _sensingDistance_2; | |||||
public int SensingDistance_3 { get { return _sensingDistance_3; } set { _sensingDistance_3 = value; OnPropertyChanged(); } } | |||||
private int _sensingDistance_3; | |||||
public RelayCommand SetSpeed { get; set; }//速度设定 | |||||
public RelayCommand SetArmPosition { get; set; }//机器臂位置设定 | |||||
public RelayCommand GetTestDistance_1 { get; set; }//获取感应器距离1 | |||||
public RelayCommand GetTestDistance_2 { get; set; }//获取感应器距离2 | |||||
public RelayCommand GetTestDistance_3 { get; set; }//获取感应器距离3 | |||||
#endregion | #endregion | ||||
public bool Up { get { return _Up; } set { _Up = value; OnPropertyChanged(); } } | public bool Up { get { return _Up; } set { _Up = value; OnPropertyChanged(); } } | ||||
private bool _Up; | private bool _Up; | ||||
@@ -355,9 +379,9 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
public RelayCommand StopElectromagnetism { get; set; } | public RelayCommand StopElectromagnetism { get; set; } | ||||
public RelayCommand PawTurnFront { get; set; }//夹爪正转 | public RelayCommand PawTurnFront { get; set; }//夹爪正转 | ||||
public RelayCommand PawTurnBack { get; set; }//夹爪反转 | public RelayCommand PawTurnBack { get; set; }//夹爪反转 | ||||
public RelayCommand PawToPoint1 { get; set; }//感应测距1 | |||||
public RelayCommand PawToPoint2 { get; set; }//感应测距2 | |||||
public RelayCommand PawToPoint3 { get; set; }//感应测距3 | |||||
public RelayCommand PawToPoint1 { get; set; }//夹爪位置1 | |||||
public RelayCommand PawToPoint2 { get; set; }//夹爪位置2 | |||||
public RelayCommand PawToPoint3 { get; set; }//夹爪位置3 | |||||
public RelayCommand GetDistance_1 { get; set; }//感应测距1 | public RelayCommand GetDistance_1 { get; set; }//感应测距1 | ||||
public RelayCommand GetDistance_2 { get; set; }//感应测距2 | public RelayCommand GetDistance_2 { get; set; }//感应测距2 | ||||
public RelayCommand GetDistance_3 { get; set; }//感应测距3 | public RelayCommand GetDistance_3 { get; set; }//感应测距3 | ||||
@@ -844,10 +868,10 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
return; | return; | ||||
} | } | ||||
if (PositionOne) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> {"1", OneX + OperationX, OneY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
//if (PositionOne) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> {"1", OneX + OperationX, OneY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
if (PositionTwo) | if (PositionTwo) | ||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "2", TwoX + OperationX, TwoY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "2", TwoX + OperationX, TwoY + OperationY });//设定机械臂当前位置 | ||||
@@ -876,14 +900,14 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "8", EightX + OperationX, EightY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "8", EightX + OperationX, EightY + OperationY });//设定机械臂当前位置 | ||||
} | } | ||||
if (PositionNine) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "9", NineX + OperationX, NineY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
if (PositionTen) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "10", TenX + OperationX, TenY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
//if (PositionNine) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "9", NineX + OperationX, NineY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
//if (PositionTen) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "10", TenX + OperationX, TenY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
if (PositionEleven) | if (PositionEleven) | ||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "11", ElevenX + OperationX, ElevenY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "11", ElevenX + OperationX, ElevenY + OperationY });//设定机械臂当前位置 | ||||
@@ -912,14 +936,14 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "17", SeventeenX + OperationX, SeventeenY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "17", SeventeenX + OperationX, SeventeenY + OperationY });//设定机械臂当前位置 | ||||
} | } | ||||
if (PositionEighteen) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "18", EighteenX + OperationX, EighteenY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
if (PositionNineteen) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "19", NineteenX + OperationX, NineteenY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
//if (PositionEighteen) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "18", EighteenX + OperationX, EighteenY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
//if (PositionNineteen) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "19", NineteenX + OperationX, NineteenY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
if (PositionTwenty) | if (PositionTwenty) | ||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "20", TwentyX + OperationX, TwentyY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "20", TwentyX + OperationX, TwentyY + OperationY });//设定机械臂当前位置 | ||||
@@ -948,10 +972,10 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "26", TwentySixX + OperationX, TwentySixY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "26", TwentySixX + OperationX, TwentySixY + OperationY });//设定机械臂当前位置 | ||||
} | } | ||||
if (PositionTwentySeven) | |||||
{ | |||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "27", TwentySevenX + OperationX, TwentySevenY + OperationY });//设定机械臂当前位置 | |||||
} | |||||
//if (PositionTwentySeven) | |||||
//{ | |||||
// ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "27", TwentySevenX + OperationX, TwentySevenY + OperationY });//设定机械臂当前位置 | |||||
//} | |||||
if (PositionMaterialHeight) | if (PositionMaterialHeight) | ||||
{ | { | ||||
ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "MaterialHeight", MaterialHeightX + OperationX, MaterialHeightY + OperationY });//设定机械臂当前位置 | ActionManage.GetInstance.Send("CalibrationCoordination", new List<object> { "MaterialHeight", MaterialHeightX + OperationX, MaterialHeightY + OperationY });//设定机械臂当前位置 | ||||
@@ -987,12 +1011,21 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
PawToPoint1 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint1"); });//爪子去1号位 | PawToPoint1 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint1"); });//爪子去1号位 | ||||
PawToPoint2 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint2"); });//爪子去2号位 | PawToPoint2 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint2"); });//爪子去2号位 | ||||
PawToPoint3 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint3"); });//爪子去3号位 | PawToPoint3 = new RelayCommand(() => { ActionManage.GetInstance.Send("PawToPoint3"); });//爪子去3号位 | ||||
PawTurnFront = new RelayCommand(() => { ActionManage.GetInstance.Send("PawTurnFront"); });//夹爪正转 | |||||
PawTurnBack = new RelayCommand(() => { ActionManage.GetInstance.Send("PawTurnBack"); });//夹爪反转 | |||||
PawTurnFront = new RelayCommand(() => { | |||||
ActionManage.GetInstance.Send("PawTurnFront"); | |||||
});//夹爪伸出 | |||||
PawTurnBack = new RelayCommand(() => { | |||||
ActionManage.GetInstance.Send("PawTurnBack"); | |||||
});//夹爪收缩 | |||||
GetDistance_1 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_1"); });//感应距离1 | GetDistance_1 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_1"); });//感应距离1 | ||||
GetDistance_2 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_2"); });//感应距离2 | GetDistance_2 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_2"); });//感应距离2 | ||||
GetDistance_3 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_3"); });//感应距离3 | GetDistance_3 = new RelayCommand(() => { ActionManage.GetInstance.Send("GetDistance_3"); });//感应距离3 | ||||
SetSpeed = new RelayCommand(() => { ActionManage.GetInstance.Send("SetSpeed", new List<int> { MoveSpeed }); });//速度设定 | |||||
SetArmPosition = new RelayCommand(() => { | |||||
ActionManage.GetInstance.Send("SetArmPosition", new List<int> { SettingX, SettingY }); | |||||
});//设定移动位置 | |||||
PhysicalMaterialCoordinate(); | PhysicalMaterialCoordinate(); | ||||
ActionManage.GetInstance.Register(new Action<object>((o) => | ActionManage.GetInstance.Register(new Action<object>((o) => | ||||
{ | { | ||||
@@ -120,7 +120,7 @@ namespace BPASmartClient.S7Net | |||||
} | } | ||||
public void WriteInt16(int db, short txt, int startAddress = 0) | public void WriteInt16(int db, short txt, int startAddress = 0) | ||||
{ | { | ||||
var bytes =BitConverter.GetBytes(txt); | |||||
var bytes = BitConverter.GetBytes(txt); | |||||
myPlc.WriteBytes(DataType.DataBlock, db, startAddress, bytes); | myPlc.WriteBytes(DataType.DataBlock, db, startAddress, bytes); | ||||
} | } | ||||
@@ -22,7 +22,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Communication" Version="1.0.36" /> | <PackageReference Include="BPA.Communication" Version="1.0.36" /> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -0,0 +1,8 @@ | |||||
<Application | |||||
x:Class="BPASmartClient.Update.App" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:local="clr-namespace:BPASmartClient.Update" | |||||
StartupUri="MainWindow.xaml"> | |||||
<Application.Resources /> | |||||
</Application> |
@@ -0,0 +1,17 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Configuration; | |||||
using System.Data; | |||||
using System.Linq; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
namespace BPASmartClient.Update | |||||
{ | |||||
/// <summary> | |||||
/// Interaction logic for App.xaml | |||||
/// </summary> | |||||
public partial class App : Application | |||||
{ | |||||
} | |||||
} |
@@ -0,0 +1,10 @@ | |||||
using System.Windows; | |||||
[assembly: ThemeInfo( | |||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located | |||||
//(used if a resource is not found in the page, | |||||
// or application resource dictionaries) | |||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located | |||||
//(used if a resource is not found in the page, | |||||
// app, or any theme specific resource dictionaries) | |||||
)] |
@@ -0,0 +1,14 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<OutputType>WinExe</OutputType> | |||||
<TargetFramework>net6.0-windows</TargetFramework> | |||||
<Nullable>enable</Nullable> | |||||
<UseWPF>true</UseWPF> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using BPA.Helper; | |||||
using BPASmartClient.Update.Model; | |||||
namespace BPASmartClient.Update | |||||
{ | |||||
public class MainViewsModel : NotifyBase | |||||
{ | |||||
public MainViewsModel() | |||||
{ | |||||
} | |||||
public UpdateModel um { get { return _mum; } set { _mum = value; OnPropertyChanged(); } } | |||||
private UpdateModel _mum = new UpdateModel(); | |||||
} | |||||
} |
@@ -0,0 +1,68 @@ | |||||
<Window | |||||
x:Class="BPASmartClient.Update.MainWindow" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.Update" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
Title="Update" | |||||
Width="600" | |||||
Height="400" | |||||
mc:Ignorable="d"> | |||||
<Window.DataContext> | |||||
<local:MainViewsModel /> | |||||
</Window.DataContext> | |||||
<Grid Margin="20"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="40" /> | |||||
<RowDefinition Height="40" /> | |||||
<RowDefinition /> | |||||
<RowDefinition Height="80"/> | |||||
<RowDefinition Height="40" /> | |||||
</Grid.RowDefinitions> | |||||
<TextBlock Grid.Row="0" Text="{Binding um.Version, StringFormat=当前软件版本号:\{0\}}" /> | |||||
<TextBlock Grid.Row="1" Text="{Binding um.UpgradeVersion, StringFormat=更新软件版本号:\{0\}}" /> | |||||
<TextBlock | |||||
Grid.Row="2" | |||||
Text="{Binding um.UpdateDescription}" | |||||
TextWrapping="Wrap" /> | |||||
<Grid Name="grProgressbar" Margin="0 0 0 20" Grid.Row="3"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition/> | |||||
<RowDefinition/> | |||||
</Grid.RowDefinitions> | |||||
<TextBlock Name="tb" Text="当前更新进度:1/4" VerticalAlignment="Bottom"/> | |||||
<ProgressBar Name="progressbar" Grid.Row="1" Height="15" VerticalAlignment="Center" Minimum="0" Maximum="100" Value="10"/> | |||||
</Grid> | |||||
<Grid Grid.Row="4"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | |||||
<Button | |||||
Name="cancel" | |||||
Grid.Column="0" | |||||
Width="100" | |||||
Background="DeepSkyBlue" | |||||
Click="cancel_Click" | |||||
BorderThickness="0" | |||||
Content="取消更新" | |||||
Foreground="#272727" /> | |||||
<Button | |||||
Name="ok" | |||||
Grid.Column="1" | |||||
Width="100" | |||||
Click="ok_Click" | |||||
Background="DeepSkyBlue" | |||||
BorderThickness="0" | |||||
Content="开始更新" | |||||
Foreground="#272727" /> | |||||
</Grid> | |||||
</Grid> | |||||
</Window> |
@@ -0,0 +1,85 @@ | |||||
using BPA.Helper; | |||||
using BPASmartClient.Update.Model; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Diagnostics; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.Update | |||||
{ | |||||
/// <summary> | |||||
/// Interaction logic for MainWindow.xaml | |||||
/// </summary> | |||||
public partial class MainWindow : Window | |||||
{ | |||||
public MainWindow() | |||||
{ | |||||
InitializeComponent(); | |||||
this.grProgressbar.Visibility = Visibility.Collapsed; | |||||
} | |||||
private void cancel_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
this.Close(); | |||||
} | |||||
private async void ok_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
this.cancel.Visibility = Visibility.Collapsed; | |||||
this.grProgressbar.Visibility = Visibility.Visible; | |||||
await Task.Run(() => | |||||
{ | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
this.progressbar.Value = 25; | |||||
this.tb.Text = "当前更新进度:1/4"; | |||||
}); | |||||
Thread.Sleep(2000); | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
this.progressbar.Value = 50; | |||||
this.tb.Text = "当前更新进度:2/4"; | |||||
}); | |||||
Thread.Sleep(1500); | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
this.progressbar.Value = 75; | |||||
this.tb.Text = "当前更新进度:3/4"; | |||||
}); | |||||
Thread.Sleep(3000); | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
this.progressbar.Value = 100; | |||||
this.tb.Text = "当前更新进度:4/4"; | |||||
}); | |||||
Thread.Sleep(1500); | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
this.progressbar.Value = 100; | |||||
this.tb.Text = "当前更新进度:更新完成"; | |||||
}); | |||||
Thread.Sleep(1500); | |||||
}); | |||||
string directory = AppDomain.CurrentDomain.BaseDirectory; | |||||
Process.Start($"{directory}BPASmartClient.DosingSystem.exe"); | |||||
Json<UpdateModel>.Save(); | |||||
this.Close(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,41 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using BPA.Helper; | |||||
namespace BPASmartClient.Update.Model | |||||
{ | |||||
public class UpdateModel : NotifyBase | |||||
{ | |||||
/// <summary> | |||||
/// 软件名称 | |||||
/// </summary> | |||||
public string Name { get { return _mName; } set { _mName = value; OnPropertyChanged(); } } | |||||
private string _mName = "味魔方管理系统软件[简称:味魔方] "; | |||||
/// <summary> | |||||
/// 软件当前版本号 | |||||
/// </summary> | |||||
public string Version { get { return _mVersion; } set { _mVersion = value; OnPropertyChanged(); } } | |||||
private string _mVersion = "V1.0.1"; | |||||
/// <summary> | |||||
/// 软件升级版本号 | |||||
/// </summary> | |||||
public string UpgradeVersion { get { return _mUpgradeVersion; } set { _mUpgradeVersion = value; OnPropertyChanged(); } } | |||||
private string _mUpgradeVersion = "V1.0.2"; | |||||
/// <summary> | |||||
/// 软件更新说明 | |||||
/// </summary> | |||||
public string UpdateDescription { get { return _mUpdateDescription; } set { _mUpdateDescription = value; OnPropertyChanged(); } } | |||||
private string _mUpdateDescription = "下列 Bug 问题已修复:\n1、当在某些语言环境中保存文档后重新打开时,Canvas的缩放级别与文件保存时不同。\n2、删除样本数据后执行“另存为”时,有时无法使用串行打印机打印。\n3、如果显示放大率设置为100%以外的值,有时仅部分显示最小化、最大化和关闭按钮。\n4、其他小Bug。"; | |||||
} | |||||
} |
@@ -1,5 +1,6 @@ | |||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Model; | using BPASmartClient.Model; | ||||
using BPASmartClient.Model.小炒机; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using Microsoft.Toolkit.Mvvm.Input; | using Microsoft.Toolkit.Mvvm.Input; | ||||
using System; | using System; | ||||
@@ -13,17 +14,23 @@ namespace BPASmartClient.ViewModel | |||||
{ | { | ||||
public class FoodMenuViewModel: ObservableObject | public class FoodMenuViewModel: ObservableObject | ||||
{ | { | ||||
public ObservableCollection<FoodMenuModel> FoodMenus { get; set; } = GlobalFoodMenu.LocalFoodMenus; | |||||
/// <summary> | |||||
/// 菜单 | |||||
/// </summary> | |||||
public ObservableCollection<FoodMenuModel> FoodMenus { get; set; } = new ObservableCollection<FoodMenuModel>(); | |||||
public RelayCommand<object> StartOrder { get; set; } | public RelayCommand<object> StartOrder { get; set; } | ||||
public FoodMenuViewModel() | public FoodMenuViewModel() | ||||
{ | { | ||||
Json<MaterialAndFryingTime>.Data.materials?.Keys?.ToList().ForEach(key => FoodMenus.Add(new FoodMenuModel { GoodName = key })); | |||||
StartOrder = new RelayCommand<object>((o) => | StartOrder = new RelayCommand<object>((o) => | ||||
{ | { | ||||
ActionManage.GetInstance.Send("开始下单", o); | ActionManage.GetInstance.Send("开始下单", o); | ||||
}); | }); | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,45 @@ | |||||
<UserControl | |||||
x:Class="Control.FoodMenu" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:Control" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
Name="FoodMenu1" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<UserControl.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" /> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" /> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
<Style TargetType="ListBoxItem"> | |||||
<Setter Property="Margin" Value="2" /> | |||||
<Setter Property="FontSize" Value="22" /> | |||||
<Setter Property="FontWeight" Value="Black" /> | |||||
<Setter Property="Background" Value="Transparent" /> | |||||
<Setter Property="FontFamily" Value="楷体" /> | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="ListBoxItem"> | |||||
<Border | |||||
Background="Transparent" | |||||
BorderBrush="Black" | |||||
BorderThickness="0"> | |||||
<Grid> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="80*" /> | |||||
<ColumnDefinition Width="20*" /> | |||||
</Grid.ColumnDefinitions> | |||||
</Grid> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</UserControl.Resources> | |||||
<Grid /> | |||||
</UserControl> |
@@ -0,0 +1,26 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace Control | |||||
{ | |||||
/// <summary> | |||||
/// FoodMenu.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class FoodMenu : UserControl | |||||
{ | |||||
public FoodMenu() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -6,10 +6,8 @@ | |||||
xmlns:local="clr-namespace:Control" | xmlns:local="clr-namespace:Control" | ||||
xmlns:vm="clr-namespace:BPASmartClient.ViewModel;assembly=BPASmartClient.ViewModel" | xmlns:vm="clr-namespace:BPASmartClient.ViewModel;assembly=BPASmartClient.ViewModel" | ||||
mc:Ignorable="d" | mc:Ignorable="d" | ||||
d:DesignHeight="450" d:DesignWidth="800"> | |||||
<UserControl.DataContext> | |||||
<vm:FoodMenuViewModel/> | |||||
</UserControl.DataContext> | |||||
d:DesignHeight="850" d:DesignWidth="800"> | |||||
<UserControl.Resources> | <UserControl.Resources> | ||||
<ResourceDictionary> | <ResourceDictionary> | ||||
<ResourceDictionary.MergedDictionaries> | <ResourceDictionary.MergedDictionaries> | ||||
@@ -23,6 +21,7 @@ | |||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="50"/> | <RowDefinition Height="50"/> | ||||
<RowDefinition Height="*"/> | <RowDefinition Height="*"/> | ||||
<RowDefinition Height="0.6*"/> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid HorizontalAlignment="Center"> | <Grid HorizontalAlignment="Center"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
@@ -47,11 +46,12 @@ | |||||
<TextBlock Grid.Column="1" FontSize="18" Text="{Binding GoodName}" VerticalAlignment="Center" HorizontalAlignment="Center"/> | <TextBlock Grid.Column="1" FontSize="18" Text="{Binding GoodName}" VerticalAlignment="Center" HorizontalAlignment="Center"/> | ||||
<Button Grid.Column="2" Width="120" Content="下单" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" | <Button Grid.Column="2" Width="120" Content="下单" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" | ||||
Command="{Binding DataContext.StartOrder, RelativeSource={RelativeSource AncestorType=UserControl,Mode=FindAncestor}}" | Command="{Binding DataContext.StartOrder, RelativeSource={RelativeSource AncestorType=UserControl,Mode=FindAncestor}}" | ||||
CommandParameter="{Binding GoodKey}"/> | |||||
CommandParameter="{Binding .}"/> | |||||
</Grid> | </Grid> | ||||
</DataTemplate> | </DataTemplate> | ||||
</ListBox.ItemTemplate> | </ListBox.ItemTemplate> | ||||
</ListBox> | </ListBox> | ||||
</Grid> | </Grid> | ||||
@@ -1,4 +1,5 @@ | |||||
using System; | |||||
using BPASmartClient.ViewModel; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
using System.Windows; | using System.Windows; | ||||
@@ -21,6 +22,7 @@ namespace BPASmartClient.Control | |||||
public FoodMenuView() | public FoodMenuView() | ||||
{ | { | ||||
InitializeComponent(); | InitializeComponent(); | ||||
this.DataContext = new FoodMenuViewModel(); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -80,6 +80,14 @@ | |||||
Content="订单监视" | Content="订单监视" | ||||
Cursor="Hand" | Cursor="Hand" | ||||
Tag="OrderStatusView" /> | Tag="OrderStatusView" /> | ||||
<Button | |||||
Width="120" | |||||
Height="40" | |||||
Margin="20,0" | |||||
Click="MenuItem_Click" | |||||
Content="本地菜单" | |||||
Cursor="Hand" | |||||
Tag="OrderStatusView" /> | |||||
</StackPanel> | </StackPanel> | ||||
<!--#endregion--> | <!--#endregion--> | ||||
<Menu x:Name="myMenu" Visibility="Visible"> | <Menu x:Name="myMenu" Visibility="Visible"> | ||||
@@ -66,6 +66,7 @@ namespace BPASmartClient | |||||
if(res == MessageBoxResult.OK) | if(res == MessageBoxResult.OK) | ||||
{ | { | ||||
this.Close(); | this.Close(); | ||||
Application.Current.Shutdown(); | |||||
} | } | ||||
}; | }; | ||||
@@ -10,7 +10,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Communication" Version="1.0.36" /> | <PackageReference Include="BPA.Communication" Version="1.0.36" /> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -13,6 +13,13 @@ using BPASmartClient.CustomResource.Pages.View; | |||||
using BPASmartClient.CustomResource.Pages.ViewModel; | using BPASmartClient.CustomResource.Pages.ViewModel; | ||||
using BPASmartClient.DosingSystem.View; | using BPASmartClient.DosingSystem.View; | ||||
using BPA.Helper; | using BPA.Helper; | ||||
using BPASmartClient.DosingSystem.Model; | |||||
using System.Diagnostics; | |||||
using System.IO; | |||||
using BPASmartClient.Update.Model; | |||||
using BPASmartClient.DosingSystem.ViewModel; | |||||
using System.Drawing; | |||||
using System.Windows.Media; | |||||
namespace BPASmartClient.DosingSystem | namespace BPASmartClient.DosingSystem | ||||
{ | { | ||||
@@ -27,6 +34,22 @@ namespace BPASmartClient.DosingSystem | |||||
protected override void OnStartup(StartupEventArgs e) | protected override void OnStartup(StartupEventArgs e) | ||||
{ | { | ||||
bool createNew; | bool createNew; | ||||
MessageLog.GetInstance.NotifyShow = new Action<string>(o => | |||||
{ | |||||
DebugLogViewModel.MessageModels.Add(new MessageModel() | |||||
{ | |||||
LogInfo = o, | |||||
Forground = System.Windows.Media.Brushes.DeepSkyBlue | |||||
}); | |||||
}); | |||||
MessageLog.GetInstance.NotifyShowEx = new Action<string>(o => | |||||
{ | |||||
DebugLogViewModel.MessageModels.Add(new MessageModel() | |||||
{ | |||||
LogInfo = o, | |||||
Forground = System.Windows.Media.Brushes.Red | |||||
}); | |||||
}); | |||||
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "DosingSystem", out createNew); | ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "DosingSystem", out createNew); | ||||
if (!createNew) | if (!createNew) | ||||
{ | { | ||||
@@ -38,13 +61,35 @@ namespace BPASmartClient.DosingSystem | |||||
BPASmartClient.Helper.SystemHelper.GetInstance.CreateDesktopShortcut(); | BPASmartClient.Helper.SystemHelper.GetInstance.CreateDesktopShortcut(); | ||||
MenuInit(); | MenuInit(); | ||||
DataInit(); | DataInit(); | ||||
SiemensTest.GetInstance.Init(); | |||||
DeviceInquire.GetInstance.Init();//配料机设备上线监听,设备列表初始化 | DeviceInquire.GetInstance.Init();//配料机设备上线监听,设备列表初始化 | ||||
MainView mv = new MainView(); | MainView mv = new MainView(); | ||||
mv.TitleName = "味魔方管理系统软件[简称:味魔方] 1.0.1"; | |||||
mv.TitleName = $"味魔方管理系统软件[简称:味魔方] V1.0.1"; | |||||
LoginView lv = new LoginView(); | LoginView lv = new LoginView(); | ||||
var res = lv.ShowDialog(); | var res = lv.ShowDialog(); | ||||
if (res != null && res == true) | if (res != null && res == true) | ||||
{ | { | ||||
#region 更新测试 | |||||
//string directory = $"{AppDomain.CurrentDomain.BaseDirectory}AccessFile\\JSON\\UpdateModel.json"; | |||||
//if (File.Exists(directory)) | |||||
// mv.TitleName = $"味魔方管理系统软件[简称:味魔方] {Json<UpdateModel>.Data.UpgradeVersion}"; | |||||
//else | |||||
//{ | |||||
// mv.TitleName = $"味魔方管理系统软件[简称:味魔方] V1.0.1"; | |||||
// Task.Run(() => | |||||
// { | |||||
// Thread.Sleep(3000); | |||||
// var tt = MessageNotify.GetInstance.ShowDialog("检测到新版本,请问是否现在更新?", DialogType.Information); | |||||
// if (tt) | |||||
// { | |||||
// string directory = AppDomain.CurrentDomain.BaseDirectory; | |||||
// Process.Start($"{directory}BPASmartClient.Update.exe"); | |||||
// App.Current.Dispatcher.Invoke(() => { mv.Close(); }); | |||||
// } | |||||
// }); | |||||
//} | |||||
#endregion | |||||
BPASmartClient.CustomResource.Pages.Model.MessageNotify.GetInstance.ShowUserLog("用户登录"); | BPASmartClient.CustomResource.Pages.Model.MessageNotify.GetInstance.ShowUserLog("用户登录"); | ||||
mv.Show(); | mv.Show(); | ||||
} | } | ||||
@@ -148,6 +193,15 @@ namespace BPASmartClient.DosingSystem | |||||
AssemblyName = "BPASmartClient.DosingSystem", | AssemblyName = "BPASmartClient.DosingSystem", | ||||
ToggleWindowPath = "View.ConveyerBeltManualView" | ToggleWindowPath = "View.ConveyerBeltManualView" | ||||
}); | }); | ||||
ManualControl.Add(new SubMenumodel() | |||||
{ | |||||
SubMenuName = "配料输送带控制", | |||||
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, | |||||
AssemblyName = "BPASmartClient.DosingSystem", | |||||
ToggleWindowPath = "View.TempManageControlView" | |||||
}); | |||||
//ManualControl.Add(new SubMenumodel() | //ManualControl.Add(new SubMenumodel() | ||||
//{ | //{ | ||||
// SubMenuName = "料仓控制", | // SubMenuName = "料仓控制", | ||||
@@ -21,7 +21,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.28" /> | |||||
<PackageReference Include="BPA.Helper" Version="1.0.54" /> | |||||
<PackageReference Include="BPA.Message" Version="1.0.86" /> | <PackageReference Include="BPA.Message" Version="1.0.86" /> | ||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -30,6 +30,7 @@ | |||||
<ProjectReference Include="..\BPASmartClient.CustomResource\BPASmartClient.CustomResource.csproj" /> | <ProjectReference Include="..\BPASmartClient.CustomResource\BPASmartClient.CustomResource.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Modbus\BPASmartClient.Modbus.csproj" /> | <ProjectReference Include="..\BPASmartClient.Modbus\BPASmartClient.Modbus.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.S7Net\BPASmartClient.S7Net.csproj" /> | <ProjectReference Include="..\BPASmartClient.S7Net\BPASmartClient.S7Net.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Update\BPASmartClient.Update.csproj" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -87,14 +87,13 @@ namespace BPASmartClient.DosingSystem | |||||
private void TestData() | private void TestData() | ||||
{ | { | ||||
//aa(1, "盐"); | |||||
//aa(2, "郫县豆瓣"); | |||||
//aa(3, "芥菜"); | |||||
//aa(4, "调味剂"); | |||||
//aa(5, "香料"); | |||||
//aa(6, "鸡精"); | |||||
//aa(7, "味精"); | |||||
aa(1, "盐"); | |||||
aa(2, "郫县豆瓣"); | |||||
aa(3, "芥菜"); | |||||
aa(4, "调味剂"); | |||||
aa(5, "香料"); | |||||
aa(6, "鸡精"); | |||||
aa(7, "味精"); | |||||
for (int i = 0; i < 8; i++) | for (int i = 0; i < 8; i++) | ||||
{ | { | ||||
DeviceLists.TryAdd($"192.168.1.{i + 1}", new DeviceStatus() { DeviceName = $"测试设备{i + 1}" }); | DeviceLists.TryAdd($"192.168.1.{i + 1}", new DeviceStatus() { DeviceName = $"测试设备{i + 1}" }); | ||||
@@ -144,7 +143,7 @@ namespace BPASmartClient.DosingSystem | |||||
{ | { | ||||
if (!string.IsNullOrEmpty(Json<DevicePar>.Data.BaseParModel.NetworkSegAddress)) IPSegment = Json<DevicePar>.Data.BaseParModel.NetworkSegAddress; | if (!string.IsNullOrEmpty(Json<DevicePar>.Data.BaseParModel.NetworkSegAddress)) IPSegment = Json<DevicePar>.Data.BaseParModel.NetworkSegAddress; | ||||
else Json<DevicePar>.Data.BaseParModel.NetworkSegAddress = IPSegment; | else Json<DevicePar>.Data.BaseParModel.NetworkSegAddress = IPSegment; | ||||
//TestData(); | |||||
TestData(); | |||||
IpAddressLines(); | IpAddressLines(); | ||||
SiemensDevice.GetInstance.Connect(Json<DevicePar>.Data.BaseParModel.DeviceAddress); | SiemensDevice.GetInstance.Connect(Json<DevicePar>.Data.BaseParModel.DeviceAddress); | ||||
DeviceDataInit(); | DeviceDataInit(); | ||||
@@ -62,8 +62,7 @@ | |||||
<Style x:Key="InputTextboxStyle" TargetType="TextBox"> | <Style x:Key="InputTextboxStyle" TargetType="TextBox"> | ||||
<Setter Property="Margin" Value="5,0,0,0" /> | <Setter Property="Margin" Value="5,0,0,0" /> | ||||
<Setter Property="BorderThickness" Value="0" /> | <Setter Property="BorderThickness" Value="0" /> | ||||
<Setter Property="HorizontalAlignment" Value="Left" /> | |||||
<Setter Property="Width" Value="150" /> | |||||
<Setter Property="HorizontalContentAlignment" Value="Left" /> | |||||
<Setter Property="Height" Value="40" /> | <Setter Property="Height" Value="40" /> | ||||
<Setter Property="CaretBrush" Value="{StaticResource TitleBorderColor}" /> | <Setter Property="CaretBrush" Value="{StaticResource TitleBorderColor}" /> | ||||
<Setter Property="Foreground" Value="{StaticResource TitleBorderColor}" /> | <Setter Property="Foreground" Value="{StaticResource TitleBorderColor}" /> | ||||
@@ -0,0 +1,99 @@ | |||||
<UserControl | |||||
x:Class="BPASmartClient.DosingSystem.View.TempManageControlView" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:BPASmartClient.DosingSystem.View" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource" | |||||
xmlns:vm="clr-namespace:BPASmartClient.DosingSystem.ViewModel" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<UserControl.DataContext> | |||||
<vm:TempManageControlViewModel /> | |||||
</UserControl.DataContext> | |||||
<Grid> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | |||||
<Grid Margin="8"> | |||||
<Grid | |||||
Name="cy" | |||||
Grid.Row="0" | |||||
Margin="5"> | |||||
<pry:ImageBorder | |||||
Grid.RowSpan="2" | |||||
Width="{Binding ElementName=cy, Path=ActualWidth}" | |||||
Height="{Binding ElementName=cy, Path=ActualHeight}" /> | |||||
<StackPanel Background="Transparent"> | |||||
<Grid Height="40"> | |||||
<Image | |||||
Margin="2,3,0,0" | |||||
HorizontalAlignment="Left" | |||||
VerticalAlignment="Top" | |||||
Source="/BPASmartClient.CustomResource;component/Image/标签.png" /> | |||||
<TextBlock | |||||
Margin="10,10,0,0" | |||||
VerticalAlignment="Top" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="{Binding Name}" /> | |||||
<StackPanel | |||||
Margin="0,0,20,0" | |||||
HorizontalAlignment="Right" | |||||
Orientation="Horizontal"> | |||||
<TextBlock | |||||
Margin="0,0,2,0" | |||||
Style="{StaticResource TextBlockStyle}" | |||||
Text="输送带反转控制" /> | |||||
<ToggleButton | |||||
Width="80" | |||||
Height="30" | |||||
Margin="5,0,5,0" | |||||
Background="Transparent" | |||||
FontSize="20" | |||||
IsChecked="{Binding Reversal}" | |||||
Style="{StaticResource SwitchToggleButtonStyle}" /> | |||||
<TextBlock | |||||
Margin="20,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="20" | |||||
Foreground="#00c2f4" | |||||
Text="输送带正转控制" /> | |||||
<ToggleButton | |||||
Width="80" | |||||
Height="30" | |||||
Margin="5,0,5,0" | |||||
Background="Transparent" | |||||
FontSize="20" | |||||
IsChecked="{Binding Foreward}" | |||||
Style="{StaticResource SwitchToggleButtonStyle}" /> | |||||
</StackPanel> | |||||
</Grid> | |||||
<Grid Name="gr" Height="200"> | |||||
<pry:ConveyBelt2 | |||||
Grid.RowSpan="4" | |||||
Margin="-12,0,10,0" | |||||
BeltDashThickess="50" | |||||
BeltDirection="{Binding BeltDirection}" | |||||
BeltHeight="{Binding ElementName=gr, Path=ActualHeight}" | |||||
BeltWidth="{Binding ElementName=gr, Path=ActualWidth}" | |||||
IsRun="{Binding IsRun}" /> | |||||
</Grid> | |||||
</StackPanel> | |||||
</Grid> | |||||
</Grid> | |||||
</Grid> | |||||
</UserControl> |
@@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.DosingSystem.View | |||||
{ | |||||
/// <summary> | |||||
/// TempManageControlView.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class TempManageControlView : UserControl | |||||
{ | |||||
public TempManageControlView() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,115 @@ | |||||
using BPA.Helper; | |||||
using BPASmartClient.S7Net; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.DosingSystem.ViewModel | |||||
{ | |||||
public class TempManageControlViewModel : NotifyBase | |||||
{ | |||||
public TempManageControlViewModel() | |||||
{ | |||||
} | |||||
/// <summary> | |||||
/// 正转 | |||||
/// </summary> | |||||
public bool Foreward | |||||
{ | |||||
get { return _mForeward; } | |||||
set | |||||
{ | |||||
_mForeward = value; | |||||
BeltDirection = 0; | |||||
IsRun = _mForeward; | |||||
OnPropertyChanged(); | |||||
Task.Factory.StartNew(() => | |||||
{ | |||||
if (Reversal || !_mForeward) | |||||
{ | |||||
SiemensTest.GetInstance.sh.Write("M1000.1", true); | |||||
Thread.Sleep(2000); | |||||
SiemensTest.GetInstance.sh.Write("M1000.1", false); | |||||
} | |||||
if (_mForeward) | |||||
{ | |||||
SiemensTest.GetInstance.sh.Write("M1000.0", true); | |||||
Thread.Sleep(2000); | |||||
SiemensTest.GetInstance.sh.Write("M1000.0", false); | |||||
} | |||||
}); | |||||
} | |||||
} | |||||
private bool _mForeward; | |||||
/// <summary> | |||||
/// 反转 | |||||
/// </summary> | |||||
public bool Reversal | |||||
{ | |||||
get { return _mReversal; } | |||||
set | |||||
{ | |||||
_mReversal = value; | |||||
BeltDirection = 1; | |||||
IsRun = _mReversal; | |||||
OnPropertyChanged(); | |||||
Task.Factory.StartNew(() => | |||||
{ | |||||
if (Foreward || !_mReversal) | |||||
{ | |||||
SiemensTest.GetInstance.sh.Write("M1000.1", true); | |||||
Thread.Sleep(2000); | |||||
SiemensTest.GetInstance.sh.Write("M1000.1", false); | |||||
} | |||||
if (_mReversal) | |||||
{ | |||||
SiemensTest.GetInstance.sh.Write("M1000.3", true); | |||||
Thread.Sleep(2000); | |||||
SiemensTest.GetInstance.sh.Write("M1000.3", false); | |||||
} | |||||
}); | |||||
} | |||||
} | |||||
private bool _mReversal; | |||||
public bool IsRun { get { return _mIsRun; } set { _mIsRun = value; OnPropertyChanged(); } } | |||||
private bool _mIsRun; | |||||
public int BeltDirection { get { return _mBeltDirection; } set { _mBeltDirection = value; OnPropertyChanged(); } } | |||||
private int _mBeltDirection; | |||||
} | |||||
public class SiemensTest | |||||
{ | |||||
private volatile static SiemensTest _Instance; | |||||
public static SiemensTest GetInstance => _Instance ?? (_Instance = new SiemensTest()); | |||||
private SiemensTest() { } | |||||
public SiemensHelper sh { get; set; } = new SiemensHelper(); | |||||
public void Init() | |||||
{ | |||||
Task.Run(() => | |||||
{ | |||||
//sh.Connect(S7.Net.CpuType.S71500, "192.168.1.12"); | |||||
sh.Connect(S7.Net.CpuType.S71200, "192.168.0.15"); | |||||
if (sh.IsConnected) | |||||
MessageLog.GetInstance.Show("西门子PLC连接成功"); | |||||
else | |||||
MessageLog.GetInstance.Show("西门子PLC连接失败"); | |||||
}); | |||||
//sh.Connect(S7.Net.CpuType.S71500, "192.168.1.12"); | |||||
//sh.Connect(S7.Net.CpuType.S71200, "192.168.0.15"); | |||||
} | |||||
} | |||||
} |
@@ -212,6 +212,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.RobotGripper | |||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MilkTeaCube", "BPASmartClient.MilkTeaCube\BPASmartClient.MilkTeaCube.csproj", "{915F0718-B7AC-428D-ACD5-7DAACC28539F}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MilkTeaCube", "BPASmartClient.MilkTeaCube\BPASmartClient.MilkTeaCube.csproj", "{915F0718-B7AC-428D-ACD5-7DAACC28539F}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.Update", "BPASmartClient.Update\BPASmartClient.Update.csproj", "{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}" | |||||
EndProject | |||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
Debug|Any CPU = Debug|Any CPU | Debug|Any CPU = Debug|Any CPU | ||||
@@ -1986,6 +1988,26 @@ Global | |||||
{915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x64.Build.0 = Release|Any CPU | {915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x64.Build.0 = Release|Any CPU | ||||
{915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x86.ActiveCfg = Release|Any CPU | {915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x86.ActiveCfg = Release|Any CPU | ||||
{915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x86.Build.0 = Release|Any CPU | {915F0718-B7AC-428D-ACD5-7DAACC28539F}.Release|x86.Build.0 = Release|Any CPU | ||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|ARM64.Build.0 = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|ARM.Build.0 = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|ARM64.ActiveCfg = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|ARM64.Build.0 = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|x64.Build.0 = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7}.Release|x86.Build.0 = Release|Any CPU | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -2084,6 +2106,7 @@ Global | |||||
{B38F72AE-3C15-4C4E-A47E-DB2B9B318F02} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | {B38F72AE-3C15-4C4E-A47E-DB2B9B318F02} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | ||||
{5EBC34EB-4EE8-4C70-BAAA-C7F637D5E10F} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | {5EBC34EB-4EE8-4C70-BAAA-C7F637D5E10F} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | ||||
{915F0718-B7AC-428D-ACD5-7DAACC28539F} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | {915F0718-B7AC-428D-ACD5-7DAACC28539F} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | ||||
{CB3E9835-2FF2-4A76-A0EE-0819EEC8CAE7} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ExtensibilityGlobals) = postSolution | GlobalSection(ExtensibilityGlobals) = postSolution | ||||
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | ||||
@@ -1,9 +1,8 @@ | |||||
<Application x:Class="WpfApp1.App" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:local="clr-namespace:WpfApp1" | |||||
StartupUri="MainWindow.xaml"> | |||||
<Application.Resources> | |||||
</Application.Resources> | |||||
<Application | |||||
x:Class="WpfApp1.App" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:local="clr-namespace:WpfApp1" | |||||
StartupUri="MainWindow.xaml"> | |||||
<Application.Resources /> | |||||
</Application> | </Application> |
@@ -1,12 +1,29 @@ | |||||
<Window x:Class="WpfApp1.MainWindow" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:local="clr-namespace:WpfApp1" | |||||
mc:Ignorable="d" | |||||
Title="MainWindow" Height="450" Width="800"> | |||||
<Window | |||||
x:Class="WpfApp1.MainWindow" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:WpfApp1" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
Title="MainWindow" | |||||
Width="800" | |||||
Height="450" | |||||
mc:Ignorable="d"> | |||||
<Grid> | <Grid> | ||||
<Button | |||||
Width="100" | |||||
Height="30" | |||||
Margin="36,24,664,381" | |||||
Content="连接" Click="Button_Click" /> | |||||
<Button | |||||
Width="100" | |||||
Height="30" | |||||
Margin="167,24,533,381" | |||||
Content="上电" Click="Button_Click_1" /> | |||||
<Button | |||||
Width="100" | |||||
Height="30" | |||||
Margin="300,24,400,381" | |||||
Content="使能" Click="Button_Click_2" /> | |||||
</Grid> | </Grid> | ||||
</Window> | </Window> |
@@ -12,6 +12,7 @@ using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | using System.Windows.Media.Imaging; | ||||
using System.Windows.Navigation; | using System.Windows.Navigation; | ||||
using System.Windows.Shapes; | using System.Windows.Shapes; | ||||
using BPASmartClient.JakaRobot; | |||||
using BPASmartClient.S7Net; | using BPASmartClient.S7Net; | ||||
namespace WpfApp1 | namespace WpfApp1 | ||||
@@ -24,67 +25,87 @@ namespace WpfApp1 | |||||
public MainWindow() | public MainWindow() | ||||
{ | { | ||||
InitializeComponent(); | InitializeComponent(); | ||||
SiemensHelper siemensHelper = new SiemensHelper(); | |||||
siemensHelper.Connect(S7.Net.CpuType.S71200, "192.168.101.16"); | |||||
if (siemensHelper.IsConnected) | |||||
{ | |||||
siemensHelper.WriteString(S7.Net.DataType.DataBlock, 1, 0, "cccc"); | |||||
var res = siemensHelper.ReadClass<XL_Start_DB>(1); | |||||
//SiemensHelper siemensHelper = new SiemensHelper(); | |||||
//siemensHelper.Connect(S7.Net.CpuType.S71200, "192.168.101.16"); | |||||
//if (siemensHelper.IsConnected) | |||||
//{ | |||||
// siemensHelper.WriteString(S7.Net.DataType.DataBlock, 1, 0, "cccc"); | |||||
// var res = siemensHelper.ReadClass<XL_Start_DB>(1); | |||||
//XL_Start_DB xL_Start_DB = new XL_Start_DB(); | |||||
//xL_Start_DB.RecipeCode = "编码"; | |||||
//xL_Start_DB.RecipeName = "名称"; | |||||
//xL_Start_DB.StockCode = 1; | |||||
//xL_Start_DB.TrayCode = 2; | |||||
//for (int i = 0; i < xL_Start_DB.Powder.Length; i++) | |||||
//{ | |||||
// xL_Start_DB.Powder[i].Powder_Name = $"料{i}"; | |||||
// xL_Start_DB.Powder[i].Powder_Weight = (float)(5.0 + i); | |||||
//} | |||||
//for (int i = 0; i < xL_Start_DB.Material.Length; i++) | |||||
//{ | |||||
// xL_Start_DB.Material[i].Material_Name = $"原料{i}"; | |||||
// xL_Start_DB.Material[i].Material_Weight = (float)(50.0 + i); | |||||
// xL_Start_DB.Material[i].Material_BarrelNum = (short)(i + 1); | |||||
//} | |||||
//xL_Start_DB.Order_Request_ACK = true; | |||||
//xL_Start_DB.Order_Request = true; | |||||
// //XL_Start_DB xL_Start_DB = new XL_Start_DB(); | |||||
// //xL_Start_DB.RecipeCode = "编码"; | |||||
// //xL_Start_DB.RecipeName = "名称"; | |||||
// //xL_Start_DB.StockCode = 1; | |||||
// //xL_Start_DB.TrayCode = 2; | |||||
// //for (int i = 0; i < xL_Start_DB.Powder.Length; i++) | |||||
// //{ | |||||
// // xL_Start_DB.Powder[i].Powder_Name = $"料{i}"; | |||||
// // xL_Start_DB.Powder[i].Powder_Weight = (float)(5.0 + i); | |||||
// //} | |||||
// //for (int i = 0; i < xL_Start_DB.Material.Length; i++) | |||||
// //{ | |||||
// // xL_Start_DB.Material[i].Material_Name = $"原料{i}"; | |||||
// // xL_Start_DB.Material[i].Material_Weight = (float)(50.0 + i); | |||||
// // xL_Start_DB.Material[i].Material_BarrelNum = (short)(i + 1); | |||||
// //} | |||||
// //xL_Start_DB.Order_Request_ACK = true; | |||||
// //xL_Start_DB.Order_Request = true; | |||||
//for (int i = 0; i < xL_Start_DB.Standby.Length; i++) | |||||
//{ | |||||
// xL_Start_DB.Standby[i] = (short)(i + 100); | |||||
// xL_Start_DB.Standby1[i] = (short)(i + 300); | |||||
//} | |||||
// //for (int i = 0; i < xL_Start_DB.Standby.Length; i++) | |||||
// //{ | |||||
// // xL_Start_DB.Standby[i] = (short)(i + 100); | |||||
// // xL_Start_DB.Standby1[i] = (short)(i + 300); | |||||
// //} | |||||
res.RecipeCode = ""; | |||||
res.RecipeName = ""; | |||||
res.StockCode = 0; | |||||
res.TrayCode = 0; | |||||
for (int i = 0; i < res.Powder.Length; i++) | |||||
{ | |||||
res.Powder[i].Powder_Name = ""; | |||||
res.Powder[i].Powder_Weight = 0; | |||||
} | |||||
for (int i = 0; i < res.Material.Length; i++) | |||||
{ | |||||
res.Material[i].Material_Name = ""; | |||||
res.Material[i].Material_Weight = 0; | |||||
res.Material[i].Material_BarrelNum = 0; | |||||
} | |||||
res.Order_Request_ACK = false; | |||||
res.Order_Request = false; | |||||
// res.RecipeCode = ""; | |||||
// res.RecipeName = ""; | |||||
// res.StockCode = 0; | |||||
// res.TrayCode = 0; | |||||
// for (int i = 0; i < res.Powder.Length; i++) | |||||
// { | |||||
// res.Powder[i].Powder_Name = ""; | |||||
// res.Powder[i].Powder_Weight = 0; | |||||
// } | |||||
// for (int i = 0; i < res.Material.Length; i++) | |||||
// { | |||||
// res.Material[i].Material_Name = ""; | |||||
// res.Material[i].Material_Weight = 0; | |||||
// res.Material[i].Material_BarrelNum = 0; | |||||
// } | |||||
// res.Order_Request_ACK = false; | |||||
// res.Order_Request = false; | |||||
for (int i = 0; i < res.Standby.Length; i++) | |||||
{ | |||||
res.Standby[i] = 0; | |||||
res.Standby1[i] = 0; | |||||
} | |||||
// for (int i = 0; i < res.Standby.Length; i++) | |||||
// { | |||||
// res.Standby[i] = 0; | |||||
// res.Standby1[i] = 0; | |||||
// } | |||||
siemensHelper.WriteClass<XL_Start_DB>(res, 1); | |||||
// siemensHelper.WriteClass<XL_Start_DB>(res, 1); | |||||
var res1 = siemensHelper.ReadClass<XL_Start_DB>(1); | |||||
} | |||||
// var res1 = siemensHelper.ReadClass<XL_Start_DB>(1); | |||||
//} | |||||
} | } | ||||
JaKaHelper jaKaHelper = new JaKaHelper(); | |||||
private void Button_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
jaKaHelper.Conn("192.168.0.12"); | |||||
MessageBox.Show($"连接成功,{jaKaHelper.rshd}"); | |||||
} | |||||
private void Button_Click_1(object sender, RoutedEventArgs e) | |||||
{ | |||||
jaKaHelper.Power_On(); | |||||
MessageBox.Show($"上电成功,{jaKaHelper.rshd}"); | |||||
} | |||||
private void Button_Click_2(object sender, RoutedEventArgs e) | |||||
{ | |||||
jaKaHelper.Enable_robot(); | |||||
MessageBox.Show($"使能成功,{jaKaHelper.rshd}"); | |||||
} | |||||
} | } | ||||
} | } |
@@ -8,6 +8,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\BPASmartClient.JakaRobot\BPASmartClient.JakaRobot.csproj" /> | |||||
<ProjectReference Include="..\BPASmartClient.S7Net\BPASmartClient.S7Net.csproj" /> | <ProjectReference Include="..\BPASmartClient.S7Net\BPASmartClient.S7Net.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||