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 Project.ViewForm { public partial class fIO : Form { public fIO() { InitializeComponent(); tblMain.SuspendLayout(); //이름설정 INput #1 List namearray = new List(32); List tagarray = new List(32); namearray.Clear(); tagarray.Clear(); for (byte i = 0; i < 16; i++) { var flagName = ((arDev.FakePLC.DIName)i).ToString(); var enumValue = Enum.Parse(typeof(arDev.FakePLC.DIPin), flagName); if (flagName == i.ToString()) tagarray.Add(string.Empty); else { //동일한 이름의 pin 번호르 찾아서 할당해준다. var eV = (arDev.FakePLC.DIPin)enumValue; tagarray.Add(((byte)eV).ToString()); } namearray.Add(flagName.Replace("_", "\n")); } for (byte i = 0; i < 8; i++) { var flagName = ((arDev.FakePLC.DOName)i).ToString(); var enumValue = Enum.Parse(typeof(arDev.FakePLC.DOPin), flagName); if (flagName == i.ToString()) tagarray.Add(string.Empty); else { //동일한 이름의 pin 번호르 찾아서 할당해준다. var eV = (arDev.FakePLC.DOPin)enumValue; tagarray.Add(((byte)eV).ToString()); } namearray.Add(flagName); } this.tblMain.setTitle(namearray.ToArray()); this.tblMain.setTag(tagarray.ToArray()); this.tblMain.setItemTextAlign(ContentAlignment.BottomLeft); //값설정 List fgValueM = new List(); List fgValueS = new List(); //mainplc for (byte i = 0; i < 16; i++) fgValueM.Add(PUB.PLC.GetValueI(i)); for (byte i = 0; i < 16; i++) fgValueM.Add(PUB.PLC.GetValueO(i)); tblMain.setValue(fgValueM.ToArray()); tblMain.ResumeLayout(); this.FormClosed += FIO_FormClosed; UpdateControl(); } void Update_HWStatus() { var rownum = 1; var colIdx = 0; if (PUB.AGV.IsOpen == false) BlinkGridViewItem(HWState, rownum, colIdx++, 3, 4); else HWState.setValue(rownum, colIdx++, 2); // if (PUB.XBE.IsOpen == false) BlinkGridViewItem(HWState, rownum, colIdx++, 3, 4); else HWState.setValue(rownum, colIdx++, 2); // if (PUB.PLC.IsOpen == false) BlinkGridViewItem(HWState, rownum, colIdx++, 3, 4); else HWState.setValue(rownum, colIdx++, 2); // if (PUB.BMS.IsOpen == false) BlinkGridViewItem(HWState, rownum, colIdx++, 3, 4); else HWState.setValue(rownum, colIdx++, 2); // } void BlinkGridViewItem(arFrame.Control.GridView ctl, int row, int col, int value1, int value2) { var curValue = ctl.getValue(row, col); ctl.setValue(row, col, (byte)(curValue == value1 ? value2 : value1)); // } void UpdateControl() { var rowNum = 1; var colIdx = 0; HWState.setTitle(0, colIdx++, "AGV"); HWState.setTitle(0, colIdx++, "XBE"); HWState.setTitle(0, colIdx++, "PLC"); HWState.setTitle(0, colIdx++, "BAT"); colIdx = 0; HWState.setTitle(rowNum, colIdx++, PUB.setting.Port_AGV); HWState.setTitle(rowNum, colIdx++, PUB.setting.Port_XBE); HWState.setTitle(rowNum, colIdx++, PUB.setting.Port_PLC); HWState.setTitle(rowNum, colIdx++, PUB.setting.Port_BAT); HWState.Invalidate(); } private void fIO_Load(object sender, EventArgs e) { this.timer1.Start(); } private void FIO_FormClosed(object sender, FormClosedEventArgs e) { //Pub.plcM.ValueChanged -= Plc1_ValueChanged; //Pub.plcS.ValueChanged -= Plc2_ValueChanged; } private void tblIn1_ItemClick(object sender, arFrame.Control.GridView.ItemClickEventArgs e) { var dataIndex = (byte)e.idx; if (dataIndex >= 16) { var ctl = sender as arFrame.Control.GridView; var pinNoStr = ctl.Tags[e.idx]; if (pinNoStr.isEmpty() == true) { Util.MsgE("해당 포트는 핀번호가 설정되지 않았습니다", true); } else { var pinNo = byte.Parse(pinNoStr); var curVal = PUB.PLC.GetValueO((byte)(dataIndex - 16)); PUB.PLC.SetOutput(pinNo, !curVal);// .Sendcommand(Device.PLC1.eCommand.SET_DOUTPUT, pinNo, newval); } } else Util.MsgE("해당 주소는 허용되지 않습니다.", true); } bool tmrun = false; private void timer1_Tick(object sender, EventArgs e) { if (this.Visible == false) return; if (tmrun == true) return; tmrun = true; label1.Text = string.Format("{0} / {1}", PUB.PLC.ioBinStr, PUB.PLC.SetupStr); label3.Text = PUB.PLC.LastMessage; Update_HWStatus(); List fgValueM = new List(); List fgValueS = new List(); //mainplc for (byte i = 0; i < 16; i++) this.tblMain.setValue(i, PUB.PLC.GetValueI(i)); for (byte i = 0; i < 16; i++) this.tblMain.setValue(i + 16, PUB.PLC.GetValueO(i)); this.tblMain.Invalidate(); tmrun = false; } private void fIO_VisibleChanged(object sender, EventArgs e) { this.timer1.Enabled = this.Visible; if (timer1.Enabled) timer1.Start(); else timer1.Stop(); } private void button1_Click(object sender, EventArgs e) { PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Up); } private void button2_Click(object sender, EventArgs e) { PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Stop); } private void button3_Click_1(object sender, EventArgs e) { PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Down); } } }