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.
181 lines
6.3 KiB
C#
181 lines
6.3 KiB
C#
using Rs.Controls;
|
|
using Rs.Motion;
|
|
using Rs.Motion.GugaoEcat;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Rs.MotionPlat
|
|
{
|
|
public partial class FormIO : BaseForm
|
|
{
|
|
private TabControlEx tab;
|
|
List<IIOCard> ioCards = new List<IIOCard>();
|
|
private Dictionary<string, IOStatus> ioDic = new Dictionary<string, IOStatus>();
|
|
public FormIO()
|
|
{
|
|
InitializeComponent();
|
|
this.Padding = new Padding(0,20,0,0);
|
|
}
|
|
|
|
private void FormIO_Load(object sender, EventArgs e)
|
|
{
|
|
ioCards = IoManager.Instance.GetCards();
|
|
tab = new TabControlEx();
|
|
tab.DrawMode = TabDrawMode.OwnerDrawFixed;
|
|
tab.ItemSize = new Size(150, 50);
|
|
tab.SuspendLayout();
|
|
foreach (IIOCard card in ioCards)
|
|
{
|
|
TabPage tp = new TabPage();
|
|
tp.BackColor = Color.FromArgb(11, 16, 36);
|
|
tp.Text = card.Name;
|
|
tab.TabPages.Add(tp);
|
|
|
|
if(card.DIn.Count>0 && card.DOut.Count>0)
|
|
{
|
|
TableLayoutPanel table= new TableLayoutPanel();
|
|
table.Dock= DockStyle.Fill;
|
|
//table.BackColor = Color.Red;
|
|
table.ColumnCount = 1;
|
|
table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
|
|
table.RowCount = 2;
|
|
table.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
|
|
table.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
|
|
|
|
Panel panel = new Panel();
|
|
panel.Dock = DockStyle.Fill;
|
|
table.Controls.Add(panel, 0, 0);
|
|
|
|
Label lblIn = new Label();
|
|
lblIn.ForeColor = Color.Black;
|
|
lblIn.Font = new Font("宋体", 20);
|
|
lblIn.AutoSize = false;
|
|
lblIn.Dock = DockStyle.Top;
|
|
lblIn.TextAlign = ContentAlignment.MiddleCenter;
|
|
lblIn.Text = "输入";
|
|
lblIn.Height = 50;
|
|
lblIn.BackColor = Color.FromArgb(255, 255, 255);
|
|
|
|
|
|
|
|
FlowLayoutPanel tableLayoutPanel = new FlowLayoutPanel();
|
|
tableLayoutPanel.Dock = DockStyle.Fill;
|
|
foreach (IIO io in card.DIn)
|
|
{
|
|
CreateIoControl(tableLayoutPanel, io);
|
|
}
|
|
panel.Controls.Add(tableLayoutPanel);
|
|
panel.Controls.Add(lblIn);
|
|
|
|
|
|
Panel panel2 = new Panel();
|
|
panel2.Dock = DockStyle.Fill;
|
|
table.Controls.Add(panel2, 0, 1);
|
|
|
|
Label lblOut = new Label();
|
|
lblOut.ForeColor=Color.White;
|
|
lblOut.Font = new Font("宋体", 24);
|
|
lblOut.AutoSize = false;
|
|
lblOut.Dock = DockStyle.Top;
|
|
lblOut.TextAlign = ContentAlignment.MiddleCenter;
|
|
lblOut.Text = "输出";
|
|
lblOut.Height = 50;
|
|
lblOut.BackColor = Color.Gray;
|
|
|
|
|
|
FlowLayoutPanel tableLayoutPane2 = new FlowLayoutPanel();
|
|
tableLayoutPane2.Dock = DockStyle.Fill;
|
|
foreach (IIO io in card.DOut)
|
|
{
|
|
CreateIoControl(tableLayoutPane2, io);
|
|
|
|
}
|
|
panel2.Controls.Add(tableLayoutPane2);
|
|
panel2.Controls.Add(lblOut);
|
|
|
|
|
|
tp.Controls.Add(table);
|
|
//分上下两部分,均分
|
|
}
|
|
else
|
|
{
|
|
FlowLayoutPanel tableLayoutPanel= new FlowLayoutPanel();
|
|
tableLayoutPanel.Dock= DockStyle.Fill;
|
|
foreach (IIO io in card.DOut)
|
|
{
|
|
CreateIoControl(tableLayoutPanel, io);
|
|
tp.Controls.Add(tableLayoutPanel);
|
|
}
|
|
foreach (IIO io in card.DIn)
|
|
{
|
|
CreateIoControl(tableLayoutPanel, io);
|
|
tp.Controls.Add(tableLayoutPanel);
|
|
}
|
|
}
|
|
}
|
|
tab.Dock = DockStyle.Fill;
|
|
this.Controls.Add(tab);
|
|
timer1.Enabled = true;
|
|
}
|
|
|
|
void CreateIoControl(FlowLayoutPanel panel, IIO io)
|
|
{
|
|
try
|
|
{
|
|
IOStatus iostatus = new IOStatus();
|
|
iostatus.Font = new Font("宋体", 16);
|
|
iostatus.Tag = io;
|
|
iostatus.Margin = new Padding(30, 20, 30, 20);
|
|
iostatus.IoNO = io.Index;
|
|
iostatus.Radius = 10;
|
|
iostatus.AutoSize = false;
|
|
iostatus.ForeColor = Color.White;
|
|
iostatus.Size = new Size(170, 70);
|
|
iostatus.Status = 0;
|
|
iostatus.Text = io.Name;
|
|
ioDic.Add(io.Name, iostatus);
|
|
iostatus.Click += (s, e) => {
|
|
IOStatus btnIo = (IOStatus)s;
|
|
IIO _io = (IIO)btnIo.Tag;
|
|
if(btnIo.Status==0)
|
|
IoManager.Instance.WriteOut(_io.Name, 1);
|
|
else
|
|
IoManager.Instance.WriteOut(_io.Name, 0);
|
|
};
|
|
panel.Controls.Add(iostatus);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
{
|
|
if(tab.SelectedIndex>=0)
|
|
{
|
|
IIOCard card = ioCards[tab.SelectedIndex];
|
|
foreach (IIO iO in card.DIn)
|
|
{
|
|
short value = IoManager.Instance.ReadIn(iO.Name);
|
|
ioDic[iO.Name].Status = value;
|
|
}
|
|
|
|
foreach (IIO iO in card.DOut)
|
|
{
|
|
short value = IoManager.Instance.ReadOut(iO.Name);
|
|
ioDic[iO.Name].Status = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|