From fa783064f7ff172f1a63b5f96a05a8d9d09becf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=84=8F=20=E5=BD=AD?= <2417589739@qq.com> Date: Tue, 11 Apr 2023 10:41:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B3=E5=94=90=E9=85=8D=E6=96=99=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserControls/ConveyBelt2.xaml | 3 +- .../UserControls/ConveyBelt2.xaml.cs | 49 ++++++-- BPASmartClient.DosingSystemSingle/App.xaml | 3 +- BPASmartClient.S7Net/SiemensHelper.cs | 2 +- DosingSystem/App.xaml.cs | 29 +++++ DosingSystem/View/TempManageControlView.xaml | 99 +++++++++++++++ .../View/TempManageControlView.xaml.cs | 28 +++++ .../ViewModel/TempManageControlViewModel.cs | 115 ++++++++++++++++++ 8 files changed, 315 insertions(+), 13 deletions(-) create mode 100644 DosingSystem/View/TempManageControlView.xaml create mode 100644 DosingSystem/View/TempManageControlView.xaml.cs create mode 100644 DosingSystem/ViewModel/TempManageControlViewModel.cs diff --git a/BPASmartClient.CustomResource/UserControls/ConveyBelt2.xaml b/BPASmartClient.CustomResource/UserControls/ConveyBelt2.xaml index 79e65167..55ea5e43 100644 --- a/BPASmartClient.CustomResource/UserControls/ConveyBelt2.xaml +++ b/BPASmartClient.CustomResource/UserControls/ConveyBelt2.xaml @@ -83,7 +83,7 @@ Duration="0:0:20" /> - + @@ -96,6 +96,7 @@ Duration="0:0:20" /> + 100) { 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 { @@ -74,7 +89,7 @@ namespace BPASmartClient.CustomResource.UserControls { this.recDown.Margin = new Thickness(0, BeltHeight - 20, 0, 0); } - else + else { 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) { - - 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); + //} } } diff --git a/BPASmartClient.DosingSystemSingle/App.xaml b/BPASmartClient.DosingSystemSingle/App.xaml index 7fb508f6..49315c62 100644 --- a/BPASmartClient.DosingSystemSingle/App.xaml +++ b/BPASmartClient.DosingSystemSingle/App.xaml @@ -1,4 +1,5 @@ -(o => + { + DebugLogViewModel.MessageModels.Add(new MessageModel() + { + LogInfo = o, + Forground = System.Windows.Media.Brushes.DeepSkyBlue + }); + }); + MessageLog.GetInstance.NotifyShowEx = new Action(o => + { + DebugLogViewModel.MessageModels.Add(new MessageModel() + { + LogInfo = o, + Forground = System.Windows.Media.Brushes.Red + }); + }); ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "DosingSystem", out createNew); if (!createNew) { @@ -42,6 +61,7 @@ namespace BPASmartClient.DosingSystem BPASmartClient.Helper.SystemHelper.GetInstance.CreateDesktopShortcut(); MenuInit(); DataInit(); + SiemensTest.GetInstance.Init(); DeviceInquire.GetInstance.Init();//配料机设备上线监听,设备列表初始化 MainView mv = new MainView(); mv.TitleName = $"味魔方管理系统软件[简称:味魔方] V1.0.1"; @@ -173,6 +193,15 @@ namespace BPASmartClient.DosingSystem AssemblyName = "BPASmartClient.DosingSystem", 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() //{ // SubMenuName = "料仓控制", diff --git a/DosingSystem/View/TempManageControlView.xaml b/DosingSystem/View/TempManageControlView.xaml new file mode 100644 index 00000000..588401a2 --- /dev/null +++ b/DosingSystem/View/TempManageControlView.xaml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DosingSystem/View/TempManageControlView.xaml.cs b/DosingSystem/View/TempManageControlView.xaml.cs new file mode 100644 index 00000000..cd3b265a --- /dev/null +++ b/DosingSystem/View/TempManageControlView.xaml.cs @@ -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 +{ + /// + /// TempManageControlView.xaml 的交互逻辑 + /// + public partial class TempManageControlView : UserControl + { + public TempManageControlView() + { + InitializeComponent(); + } + } +} diff --git a/DosingSystem/ViewModel/TempManageControlViewModel.cs b/DosingSystem/ViewModel/TempManageControlViewModel.cs new file mode 100644 index 00000000..179e6ba3 --- /dev/null +++ b/DosingSystem/ViewModel/TempManageControlViewModel.cs @@ -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() + { + + } + + /// + /// 正转 + /// + 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; + + /// + /// 反转 + /// + 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"); + } + + } +}