using System;
|
using System.Linq;
|
using System.Collections.Generic;
|
using System.Drawing;
|
using System.Threading;
|
using System.Windows.Forms;
|
using VirtualConveyor.Cache.Entity;
|
using VirtualConveyor.Conveyor.Entity;
|
using VirtualConveyor.Utils;
|
using VirtualConveyor.Properties;
|
|
namespace VirtualConveyor.View.Conveyor
|
{
|
public partial class ConveyorForm : Form
|
{
|
private ConveyorEntity Conveyor;
|
|
private List<Thread> GetGateStateThreads;
|
|
private List<Thread> ReceiveTaskThreads;
|
|
private List<Thread> StartTaskThreads;
|
|
private List<Thread> FinishTaskThreads;
|
|
|
public ConveyorForm(string name)
|
{
|
InitializeComponent();
|
Conveyor = new ConveyorEntity(name);
|
GetGateStateThreads = new List<Thread>();
|
ReceiveTaskThreads = new List<Thread>();
|
StartTaskThreads = new List<Thread>();
|
FinishTaskThreads = new List<Thread>();
|
|
Conveyor.Gates.ForEach(x => {
|
x.TaskId = "";
|
x.WPickUpLicense = true;
|
x.WPutDownLicense = true;
|
x.WOccupied = true;
|
x.WStartRotation = false;
|
x.WPickUpLicenseManual = true;
|
x.WLayingOffComplete = false;
|
x.WCheckResult = 0;
|
});
|
}
|
|
private void ConveyorForm_Load(object sender, EventArgs e)
|
{
|
try
|
{
|
CheckForIllegalCrossThreadCalls = false;
|
this.Text = Conveyor.Name;
|
|
for (var i = 0; i < Conveyor.Gates.Count; i++)
|
{
|
var gate = Conveyor.Gates[i];
|
|
var group = new GroupBox();
|
group.Text = gate.Name;
|
group.Location = new Point(5, 10 + i * 130);
|
group.Size = new Size(780, 120);
|
this.Controls.Add(group);
|
|
var tableLayoutPanel = new TableLayoutPanel();
|
tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
|
tableLayoutPanel.TabIndex = 0;
|
tableLayoutPanel.ColumnCount = 8;
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
tableLayoutPanel.RowCount = 4;
|
tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
|
group.Controls.Add(tableLayoutPanel);
|
|
var j = 0;
|
var k = 0;
|
|
//1
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.TaskId))
|
{
|
var lbProcessCard = new Label();
|
lbProcessCard.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
lbProcessCard.TabIndex = 0;
|
lbProcessCard.Text = "任务号";
|
lbProcessCard.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbProcessCard, j, k);
|
j += 1;
|
var tbProcessCard = new TextBox();
|
tbProcessCard.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
tbProcessCard.ReadOnly = true;
|
tbProcessCard.TabIndex = 1;
|
tbProcessCard.DataBindings.Add("Text", gate, "TaskId");
|
tableLayoutPanel.Controls.Add(tbProcessCard, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
|
//2
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbol))
|
{
|
var lbStartSymbol = new Label();
|
lbStartSymbol.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbStartSymbol.TabIndex = 0;
|
lbStartSymbol.Text = "放货完成";
|
lbStartSymbol.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbStartSymbol, j, k);
|
j += 1;
|
var tbStartSymbol = new TextBox();
|
tbStartSymbol.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbStartSymbol.ReadOnly = true;
|
tbStartSymbol.TabIndex = 1;
|
tbStartSymbol.DataBindings.Add("Text", gate, "PutSymbol");
|
tableLayoutPanel.Controls.Add(tbStartSymbol, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//3
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbolManual))
|
{
|
var lbStartSymbolManual = new Label();
|
lbStartSymbolManual.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbStartSymbolManual.TabIndex = 0;
|
lbStartSymbolManual.Text = "手动放货完成";
|
lbStartSymbolManual.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbStartSymbolManual, j, k);
|
j += 1;
|
var tbStartSymbolManual = new TextBox();
|
tbStartSymbolManual.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbStartSymbolManual.ReadOnly = true;
|
tbStartSymbolManual.TabIndex = 1;
|
tbStartSymbolManual.DataBindings.Add("Text", gate, "PutSymbolManual");
|
tableLayoutPanel.Controls.Add(tbStartSymbolManual, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//4
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PickSymbol))
|
{
|
var lbPickSymbol = new Label();
|
lbPickSymbol.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbPickSymbol.TabIndex = 0;
|
lbPickSymbol.Text = "取货完成";
|
lbPickSymbol.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbPickSymbol, j, k);
|
j += 1;
|
var tbPickSymbol = new TextBox();
|
tbPickSymbol.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbPickSymbol.ReadOnly = true;
|
tbPickSymbol.TabIndex = 1;
|
tbPickSymbol.DataBindings.Add("Text", gate, "PickSymbol");
|
tableLayoutPanel.Controls.Add(tbPickSymbol, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
j = 0;
|
k = 2;
|
//5
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.TaskId))
|
{
|
var lbWProcessCardNumber = new Label();
|
lbWProcessCardNumber.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWProcessCardNumber.TabIndex = 0;
|
lbWProcessCardNumber.Text = "任务号";
|
lbWProcessCardNumber.TextAlign = ContentAlignment.MiddleRight;
|
|
tableLayoutPanel.Controls.Add(lbWProcessCardNumber, j, k);
|
j += 1;
|
var tbWProcessCardNumber = new TextBox();
|
tbWProcessCardNumber.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWProcessCardNumber.ReadOnly = true;
|
tbWProcessCardNumber.TabIndex = 1;
|
tbWProcessCardNumber.DataBindings.Add("Text", gate, "WTaskId");
|
tableLayoutPanel.Controls.Add(tbWProcessCardNumber, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
//6
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.PickUpLicense))
|
{
|
var lbWPickUpLicense = new Label();
|
lbWPickUpLicense.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWPickUpLicense.TabIndex = 0;
|
lbWPickUpLicense.Text = "允许取货";
|
lbWPickUpLicense.TextAlign = ContentAlignment.MiddleRight;
|
lbWPickUpLicense.Name = "lbWPickUpLicense" + gate.Name;
|
lbWPickUpLicense.Click += new EventHandler(lbChangeValue_Click);
|
tableLayoutPanel.Controls.Add(lbWPickUpLicense, j, k);
|
j += 1;
|
var tbWPickUpLicense = new TextBox();
|
tbWPickUpLicense.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWPickUpLicense.ReadOnly = true;
|
tbWPickUpLicense.TabIndex = 1;
|
tbWPickUpLicense.DataBindings.Add("Text", gate, "WPickUpLicense");
|
tableLayoutPanel.Controls.Add(tbWPickUpLicense, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
//7
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.PutDownLicense))
|
{
|
var lbWPickUpLicense = new Label();
|
lbWPickUpLicense.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWPickUpLicense.TabIndex = 0;
|
lbWPickUpLicense.Text = "允许放货";
|
lbWPickUpLicense.TextAlign = ContentAlignment.MiddleRight;
|
lbWPickUpLicense.Name = "lbWPutDownLicense" + gate.Name;
|
lbWPickUpLicense.Click += new EventHandler(lbChangeValue_Click);
|
tableLayoutPanel.Controls.Add(lbWPickUpLicense, j, k);
|
j += 1;
|
var tbWPickUpLicense = new TextBox();
|
tbWPickUpLicense.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWPickUpLicense.ReadOnly = true;
|
tbWPickUpLicense.TabIndex = 1;
|
tbWPickUpLicense.DataBindings.Add("Text", gate, "WPutDownLicense");
|
tableLayoutPanel.Controls.Add(tbWPickUpLicense, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//8
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.PickUpLicenseManual))
|
{
|
var lbWPickUpLicenseManual = new Label();
|
lbWPickUpLicenseManual.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWPickUpLicenseManual.TabIndex = 0;
|
lbWPickUpLicenseManual.Text = "手动放货允许";
|
lbWPickUpLicenseManual.TextAlign = ContentAlignment.MiddleRight;
|
|
lbWPickUpLicenseManual.Name = "lbWPickUpLicenseManual" + gate.Name;
|
lbWPickUpLicenseManual.Click += new EventHandler(lbChangeValue_Click);
|
|
tableLayoutPanel.Controls.Add(lbWPickUpLicenseManual, j, k);
|
j += 1;
|
var tbWPickUpLicenseManual = new TextBox();
|
tbWPickUpLicenseManual.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWPickUpLicenseManual.ReadOnly = true;
|
tbWPickUpLicenseManual.TabIndex = 1;
|
tbWPickUpLicenseManual.DataBindings.Add("Text", gate, "WPickUpLicenseManual");
|
tableLayoutPanel.Controls.Add(tbWPickUpLicenseManual, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//9
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.Occupied))
|
{
|
var lbWOccupied = new Label();
|
lbWOccupied.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWOccupied.TabIndex = 0;
|
lbWOccupied.Text = "到位信号";
|
lbWOccupied.Name = "lbWOccupied" + gate.Name;
|
lbWOccupied.Click += new EventHandler(lbChangeValue_Click);
|
lbWOccupied.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbWOccupied, j, k);
|
j += 1;
|
var tbWOccupied = new TextBox();
|
tbWOccupied.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWOccupied.ReadOnly = true;
|
tbWOccupied.TabIndex = 1;
|
tbWOccupied.DataBindings.Add("Text", gate, "WOccupied");
|
tableLayoutPanel.Controls.Add(tbWOccupied, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//10
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.StartRotation))
|
{
|
var lbWStartRotation = new Label();
|
lbWStartRotation.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWStartRotation.TabIndex = 0;
|
lbWStartRotation.Text = "滚动开始";
|
lbWStartRotation.Name = "lbWStartRotation" + gate.Name;
|
lbWStartRotation.Click += new EventHandler(lbChangeValue_Click);
|
lbWStartRotation.TextAlign = ContentAlignment.MiddleRight;
|
tableLayoutPanel.Controls.Add(lbWStartRotation, j, k);
|
j += 1;
|
var tbWStartRotation = new TextBox();
|
tbWStartRotation.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWStartRotation.ReadOnly = true;
|
tbWStartRotation.TabIndex = 1;
|
tbWStartRotation.DataBindings.Add("Text", gate, "WStartRotation");
|
tableLayoutPanel.Controls.Add(tbWStartRotation, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//11
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.LayingOffComplete))
|
{
|
var lbWLayingOffComplete = new Label();
|
lbWLayingOffComplete.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWLayingOffComplete.TabIndex = 0;
|
lbWLayingOffComplete.Text = "滚料完成";
|
lbWLayingOffComplete.TextAlign = ContentAlignment.MiddleRight;
|
lbWLayingOffComplete.Name = "lbWLayingOffComplete" + gate.Name;
|
lbWLayingOffComplete.Click += new EventHandler(lbChangeValue_Click);
|
tableLayoutPanel.Controls.Add(lbWLayingOffComplete, j, k);
|
j += 1;
|
var tbWLayingOffComplete = new TextBox();
|
tbWLayingOffComplete.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWLayingOffComplete.ReadOnly = true;
|
tbWLayingOffComplete.TabIndex = 1;
|
tbWLayingOffComplete.DataBindings.Add("Text", gate, "WLayingOffComplete");
|
tableLayoutPanel.Controls.Add(tbWLayingOffComplete, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
//12
|
if (!string.IsNullOrEmpty(gate.OpcWriteItems.CheckResult))
|
{
|
var lbWCheckResult = new Label();
|
lbWCheckResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
lbWCheckResult.TabIndex = 0;
|
lbWCheckResult.Text = "人工结果";
|
lbWCheckResult.TextAlign = ContentAlignment.MiddleRight;
|
lbWCheckResult.Name = "lbWCheckResult" + gate.Name;
|
lbWCheckResult.Click += new EventHandler(lbChangeValue_Click);
|
tableLayoutPanel.Controls.Add(lbWCheckResult, j, k);
|
j += 1;
|
var tbWCheckResult = new TextBox();
|
tbWCheckResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
tbWCheckResult.ReadOnly = true;
|
tbWCheckResult.TabIndex = 1;
|
tbWCheckResult.DataBindings.Add("Text", gate, "WCheckResult");
|
tableLayoutPanel.Controls.Add(tbWCheckResult, j, k);
|
j = j < tableLayoutPanel.ColumnCount - 1 ? j + 1 : 0;
|
if (j == 0) { k += 1; }
|
}
|
|
}
|
|
|
Conveyor.Gates.ForEach(x =>
|
{
|
var t1 = new Thread(new ParameterizedThreadStart(GetGateState));
|
GetGateStateThreads.Add(t1);
|
ThreadHelper.StartThread(t1, x);
|
|
var t2 = new Thread(new ParameterizedThreadStart(ReceiveTask));
|
ReceiveTaskThreads.Add(t2);
|
ThreadHelper.StartThread(t2, x);
|
|
var t3 = new Thread(new ParameterizedThreadStart(StartTask));
|
StartTaskThreads.Add(t3);
|
ThreadHelper.StartThread(t3, x);
|
|
var t4 = new Thread(new ParameterizedThreadStart(FinishTask));
|
FinishTaskThreads.Add(t4);
|
ThreadHelper.StartThread(t4, x);
|
|
});
|
}
|
catch (Exception ex)
|
{
|
MessageBox.Show(ex.Message);
|
}
|
}
|
|
|
private void ConveyorForm_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
GetGateStateThreads.ForEach(x => ThreadHelper.CloseThread(x));
|
ReceiveTaskThreads.ForEach(x => ThreadHelper.CloseThread(x));
|
StartTaskThreads.ForEach(x => ThreadHelper.CloseThread(x));
|
FinishTaskThreads.ForEach(x => ThreadHelper.CloseThread(x));
|
}
|
|
|
private void lbChangeValue_Click(object sender, EventArgs e)
|
{
|
var name = ((Label)sender).Name;
|
|
if(name.StartsWith("lbWPickUpLicenseManual"))
|
{
|
var gateName = name.Substring("lbWPickUpLicenseManual".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WPickUpLicenseManual = !gate.WPickUpLicenseManual;
|
}
|
else if (name.StartsWith("lbWPickUpLicense"))
|
{
|
var gateName = name.Substring("lbWPickUpLicense".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WPickUpLicense = !gate.WPickUpLicense;
|
}
|
else if (name.StartsWith("lbWPutDownLicense"))
|
{
|
var gateName = name.Substring("lbWPutDownLicense".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WPutDownLicense = !gate.WPutDownLicense;
|
}
|
else if (name.StartsWith("lbWCheckResult"))
|
{
|
var gateName = name.Substring("lbWCheckResult".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WCheckResult = (gate.WCheckResult + 1) % 3;
|
}
|
else if (name.StartsWith("lbWOccupied"))
|
{
|
var gateName = name.Substring("lbWOccupied".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WOccupied = !gate.WOccupied;
|
}
|
else if (name.StartsWith("lbWStartRotation"))
|
{
|
var gateName = name.Substring("lbWStartRotation".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WStartRotation = !gate.WStartRotation;
|
}
|
else if (name.StartsWith("lbWLayingOffComplete"))
|
{
|
var gateName = name.Substring("lbWLayingOffComplete".Length);
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Name == gateName);
|
gate.WLayingOffComplete = !gate.WLayingOffComplete;
|
}
|
}
|
|
private void FinishTask(object x)
|
{
|
var gate = (GateEntity)x;
|
string msg;
|
while (true)
|
{
|
var flag = gate.FinishTask(out msg);
|
if (!flag)
|
{
|
//LogTextHelper.WriteLine(Resources.LogDir, "堆垛机{0}接收任务失败:{1}", Stacker.Name, msg);
|
}
|
else
|
{
|
LogTextHelper.WriteLine(Resources.LogDir, "端口{0}结束任务成功:{1}", gate.Name, gate.TaskId);
|
}
|
|
Thread.Sleep(1000);
|
}
|
}
|
|
|
|
private void StartTask(object x)
|
{
|
var gate = (GateEntity)x;
|
string msg;
|
while (true)
|
{
|
var flag = gate.StartTask(out msg);
|
if (!flag)
|
{
|
//LogTextHelper.WriteLine(Resources.LogDir, "堆垛机{0}接收任务失败:{1}", Stacker.Name, msg);
|
}
|
else
|
{
|
LogTextHelper.WriteLine(Resources.LogDir, "端口{0}开始任务成功:{1}", gate.Name, gate.TaskId);
|
}
|
|
Thread.Sleep(1000);
|
}
|
}
|
|
|
private void ReceiveTask(object x)
|
{
|
var gate = (GateEntity)x;
|
string msg;
|
while (true)
|
{
|
var flag = gate.ReceiveTask(out msg);
|
if (!flag)
|
{
|
//LogTextHelper.WriteLine(Resources.LogDir, "堆垛机{0}接收任务失败:{1}", Stacker.Name, msg);
|
}
|
else
|
{
|
LogTextHelper.WriteLine(Resources.LogDir, "端口{0}接收任务成功:{1}", gate.Name, gate.TaskId);
|
}
|
|
Thread.Sleep(1000);
|
}
|
}
|
|
private void GetGateState(object x)
|
{
|
var gate = (GateEntity)x;
|
var items = new List<string>();
|
|
//1
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.TaskId))
|
{
|
items.Add(gate.OpcReadItems.TaskId);
|
}
|
|
//5
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbol))
|
{
|
items.Add(gate.OpcReadItems.PutSymbol);
|
}
|
|
//6
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PickSymbol))
|
{
|
items.Add(gate.OpcReadItems.PickSymbol);
|
}
|
|
//7
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbolManual))
|
{
|
items.Add(gate.OpcReadItems.PutSymbolManual);
|
}
|
while(true)
|
{
|
|
var opcs = CacheEntity.OpcWcfServiceClient.ReadValues(items.ToArray());
|
|
if (opcs == null || opcs.Length <= 0)
|
{
|
Thread.Sleep(1000);
|
continue;
|
}
|
|
|
var i = 0;
|
|
//1
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.TaskId))
|
{
|
var value = opcs[i++];
|
gate.TaskId = value == null ? "" : value.ToString();
|
}
|
|
//5
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbol))
|
{
|
var value = opcs[i++];
|
gate.PutSymbol = value == null ? false : bool.Parse(value.ToString());
|
}
|
|
//6
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PickSymbol))
|
{
|
var value = opcs[i++];
|
gate.PickSymbol = value == null ? false : bool.Parse(value.ToString());
|
}
|
|
//7
|
if (!string.IsNullOrEmpty(gate.OpcReadItems.PutSymbolManual))
|
{
|
var value = opcs[i++];
|
gate.PutSymbolManual = value == null ? false : bool.Parse(value.ToString());
|
}
|
|
Thread.Sleep(1000);
|
}
|
|
}
|
|
}
|
}
|