You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lj_plc/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/LjDeliverControlBoard/ControlBoardButtonAction.cs

295 lines
12 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DataBlockHelper;
using DataBlockHelper.DBHelpers;
using Mesnac.Action.Base;
using Mesnac.Action.ChemicalWeighing.LjDeliverControlBoard.Entity;
using Mesnac.Action.ChemicalWeighing.Util;
using Mesnac.Controls.ChemicalWeighing;
using Mesnac.Controls.Default;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mesnac.Action.ChemicalWeighing.LjDeliverControlBoard
{
public class ControlBoardButtonAction : ChemicalWeighingAction, IAction
{
DB191Helper DB191 = new DB191Helper();
List<Control> Controls;
MCButtonEntity ButtonE = new MCButtonEntity();
MCRadioButtonEntity RadioButtonE = new MCRadioButtonEntity();
MCCombobox MotorSelect;
public void Run(RuntimeParameter runtime)
{
RunIni(runtime);
Controls = GetAllControls();
MotorSelect = Controls.FirstOrDefault(x => x != null && x.Name == "MotorSelect") as MCCombobox;
SetAllControls();
ButtonSelect(runtime);
}
private void ButtonSelect(RuntimeParameter runtime)
{
if (runtime.Sender == ButtonE.BoardOnA)
{
if (!DB191.GetPanelOnOff()[0])
{
if (MessageBox.Show("确认要启动操作面板A", "操作面板启动确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
DB191WriteHelper.SetPanelOnOffA(true);
ButtonE.BoardOnA.Text = "关闭面板";
ButtonE.BoardOnA.BackColor = System.Drawing.Color.LightGreen;
}
else
{
DB191WriteHelper.SetPanelOnOffA(false);
ButtonE.BoardOnA.Text = "面板启用";
ButtonE.BoardOnA.BackColor = System.Drawing.Color.Yellow;
MessageBox.Show("面板已关闭");
}
}
if (runtime.Sender == ButtonE.BoardOnB)
{
if (!DB191.GetPanelOnOff()[1])
{
if (MessageBox.Show("确认要启动操作面板B", "操作面板启动确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
DB191WriteHelper.SetPanelOnOffB(true);
ButtonE.BoardOnB.Text = "关闭面板";
ButtonE.BoardOnB.BackColor = System.Drawing.Color.LightGreen;
}
else
{
DB191WriteHelper.SetPanelOnOffB(false);
ButtonE.BoardOnB.Text = "面板启用";
ButtonE.BoardOnB.BackColor = System.Drawing.Color.Yellow;
MessageBox.Show("面板已关闭");
}
}
if (runtime.Sender == ButtonE.BoardOnC)
{
if (!DB191.GetPanelOnOff()[2])
{
if (MessageBox.Show("确认要启动操作面板C", "操作面板启动确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
DB191WriteHelper.SetPanelOnOffC(true);
ButtonE.BoardOnC.Text = "关闭面板";
ButtonE.BoardOnC.BackColor = System.Drawing.Color.LightGreen;
}
else
{
DB191WriteHelper.SetPanelOnOffC(false);
ButtonE.BoardOnC.Text = "面板启用";
ButtonE.BoardOnC.BackColor = System.Drawing.Color.Yellow;
MessageBox.Show("面板已关闭");
}
}
if (runtime.Sender == ButtonE.DownLoadBoardA)
{
if (MessageBox.Show("确认下发A面板数据", "数据下发确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
switch (ControlsHelper.BottleSelectA(RadioButtonE))
{
case 1: DB191WriteHelper.SetVesselModeA(true, false); break;
case 2: DB191WriteHelper.SetVesselModeA(false, true); break;
case 3: DB191WriteHelper.SetVesselModeA(false, false); break;
default: MessageBox.Show("请先选择压送罐模式!"); return;
}
DB191WriteHelper.SetSiloGroupA(
Convert.ToBoolean(RadioButtonE.StoreGroupAA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupBA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupCA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupDA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupEA.MCValue)
);
DB191WriteHelper.SetSiloA(
Convert.ToBoolean(RadioButtonE.StoreAA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreBA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreCA.MCValue),
Convert.ToBoolean(RadioButtonE.StoreDA.MCValue)
);
}
if (runtime.Sender == ButtonE.DownLoadBoardB)
{
if (MessageBox.Show("确认下发B面板数据", "数据下发确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
switch (ControlsHelper.BottleSelectB(RadioButtonE))
{
case 1: DB191WriteHelper.SetVesselModeB(true, false); break;
case 2: DB191WriteHelper.SetVesselModeB(false, true); break;
case 3: DB191WriteHelper.SetVesselModeB(false, false); break;
default: MessageBox.Show("请先选择压送罐模式!"); return;
}
DB191WriteHelper.SetSiloGroupB(
Convert.ToBoolean(RadioButtonE.StoreGroupAB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupBB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupCB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupDB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupEB.MCValue)
);
DB191WriteHelper.SetSiloB(
Convert.ToBoolean(RadioButtonE.StoreAB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreBB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreCB.MCValue),
Convert.ToBoolean(RadioButtonE.StoreDB.MCValue)
);
}
if (runtime.Sender == ButtonE.DownLoadBoardC)
{
if (MessageBox.Show("确认下发C面板数据", "数据下发确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
switch (ControlsHelper.BottleSelectC(RadioButtonE))
{
case 1: DB191WriteHelper.SetVesselModeC(true, false); break;
case 2: DB191WriteHelper.SetVesselModeC(false, true); break;
case 3: DB191WriteHelper.SetVesselModeC(false, false); break;
default: MessageBox.Show("请先选择压送罐模式!"); return;
}
DB191WriteHelper.SetSiloGroupC(
Convert.ToBoolean(RadioButtonE.StoreGroupAC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupBC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupCC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupDC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreGroupEC.MCValue)
);
DB191WriteHelper.SetSiloC(
Convert.ToBoolean(RadioButtonE.StoreAC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreBC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreCC.MCValue),
Convert.ToBoolean(RadioButtonE.StoreDC.MCValue)
);
}
if (runtime.Sender == ButtonE.SwitchAutoMode)
{
string name = MotorSelect.Text;
if (MessageBox.Show($"确认将{name}切换到自动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
string str = MotorSelect.MCValue.ToString();
int value = Convert.ToInt32(str);
if (value <= 32)
{
ControlsHelper.WriteMode(str, false);
}
else
{
ControlsHelper.WriteMode(str, true);
}
}
if (runtime.Sender == ButtonE.SwitchManualMode)
{
string name = MotorSelect.Text;
if (MessageBox.Show($"确认将{name}切换到手动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
string str = MotorSelect.MCValue.ToString();
int value = Convert.ToInt32(str);
if (value <= 32)
{
ControlsHelper.WriteMode(str, true);
}
else
{
ControlsHelper.WriteMode(str, false);
}
}
if (runtime.Sender == ButtonE.ManualModeOnOff)
{
string name = MotorSelect.Text;
string str = MotorSelect.MCValue.ToString();
byte byt = ControlsHelper.ReadMode(str);
int value = Convert.ToInt32(str);
if (value <= 32)
{
if (byt.GetBit(3))
{
if (MessageBox.Show($"确认开启{name}的手动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
ControlsHelper.WriteModeP1(str, true);
}
else
{
if (MessageBox.Show($"确认关闭{name}的手动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
ControlsHelper.WriteModeP1(str, false);
}
}
else
{
if (byt.GetBit(5))
{
if (MessageBox.Show($"确认开启{name}的手动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
ControlsHelper.WriteModeP2(str, true);
}
else
{
if (MessageBox.Show($"确认关闭{name}的手动模式?", "电机模式切换确认", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
ControlsHelper.WriteModeP2(str, false);
}
}
}
}
private void SetAllControls()
{
ControlsImprot.ControlImport<MCButton>(ButtonE, Controls);
ControlsImprot.ControlImport<MCRadioButton>(RadioButtonE, Controls);
}
}
}