using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Modbus; using Modbus.Device; using Modbus.Data; using System.Net; using System.Net.Sockets; namespace Input_Status { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private TcpClient masterTcpClient; private ModbusIpMaster master; private void Form1_Load(object sender, EventArgs e) { } private void timerScan_Tick(object sender, EventArgs e) { CheckBox[] checkbox = new CheckBox[] { ckbCH0, ckbCH1, ckbCH2, ckbCH3, ckbCH4, ckbCH5, ckbCH6, ckbCH7, ckbCH8, ckbCH9 }; try { string sKey = ""; byte slaveID = 1; ushort startAddress = 0; ushort numInputs = ushort.Parse(txtChannelNumber.Text); bool[] inputs = master.ReadCoils(slaveID, startAddress, numInputs); for (int i = 0; i < numInputs; i++) { sKey += i.ToString() + "=>" + inputs[i].ToString() + "\r\r"; if ((i + 1) % 3 == 0) sKey += "\n"; } txtMsg.Text = sKey; int index = 0; if (numInputs > 10) index = 10; else index = numInputs; for (int i = 0; i < index; i++)//input channel statue { if (inputs[i]) { checkbox[i].Checked = true; } else checkbox[i].Checked = false; } } catch (Exception ex) { btDisconnect_Click(sender, e); MessageBox.Show(ex.Message); } } private void btConnect_Click_1(object sender, EventArgs e) { int port; port = Convert.ToInt16(txtPort.Text); masterTcpClient = new TcpClient(txtIP.Text, port); master = ModbusIpMaster.CreateIp(masterTcpClient); btConnect.Enabled = false; btDisconnect.Enabled = true; timerScan.Enabled = true; txtChannelNumber.Enabled = false; if (Int16.Parse(txtChannelNumber.Text) > 10) { label4.Enabled = true; txtChannel.Enabled = true; butONOFF.Enabled = true; } CheckBox[] checkbox = new CheckBox[] { ckbCH0, ckbCH1, ckbCH2, ckbCH3, ckbCH4, ckbCH5, ckbCH6, ckbCH7, ckbCH8, ckbCH9 }; for (int i = 0; i < 10; i++) { checkbox[i].Enabled = true; } } private void txtChannelNumber_TextChanged(object sender, EventArgs e) { } private void btDisconnect_Click(object sender, EventArgs e) { masterTcpClient.Close(); btConnect.Enabled = true; btDisconnect.Enabled = false; timerScan.Enabled = false; txtChannelNumber.Enabled = true; label4.Enabled = false; txtChannel.Enabled = false; butONOFF.Enabled = false; CheckBox[] checkbox = new CheckBox[] { ckbCH0, ckbCH1, ckbCH2, ckbCH3, ckbCH4, ckbCH5, ckbCH6, ckbCH7, ckbCH8, ckbCH9 }; for (int i = 0; i < 10; i++) { checkbox[i].Enabled = false; } } private void ckbCH0_CheckStateChanged(object sender, EventArgs e) { ushort Address = 0;// byte slaveID = 1; if (ckbCH0.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH1_CheckStateChanged(object sender, EventArgs e) { ushort Address = 1;// byte slaveID = 1; if (ckbCH1.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH2_CheckStateChanged_1(object sender, EventArgs e) { ushort Address = 2;// byte slaveID = 1; if (ckbCH2.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH3_CheckStateChanged(object sender, EventArgs e) { ushort Address = 3;// byte slaveID = 1; if (ckbCH3.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH4_CheckStateChanged(object sender, EventArgs e) { ushort Address = 4;// byte slaveID = 1; if (ckbCH4.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH5_CheckStateChanged(object sender, EventArgs e) { ushort Address = 5;// byte slaveID = 1; if (ckbCH5.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH6_CheckStateChanged(object sender, EventArgs e) { ushort Address = 6;// byte slaveID = 1; if (ckbCH6.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH7_CheckStateChanged(object sender, EventArgs e) { ushort Address = 7;// byte slaveID = 1; if (ckbCH7.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH8_CheckStateChanged(object sender, EventArgs e) { ushort Address = 8;// byte slaveID = 1; if (ckbCH8.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void ckbCH9_CheckStateChanged(object sender, EventArgs e) { ushort Address = 9;// byte slaveID = 1; if (ckbCH9.Checked == true) { master.WriteSingleCoil(slaveID, Address, true); } else master.WriteSingleCoil(slaveID, Address, false); } private void butONOFF_Click(object sender, EventArgs e) { ushort Address = ushort.Parse(txtChannel.Text);//chanell bigger than 10 byte slaveID = 1; if (butONOFF.Text == "ON") { master.WriteSingleCoil(slaveID, Address, true); butONOFF.Text = "OFF"; } else { master.WriteSingleCoil(slaveID, Address, false); butONOFF.Text = "ON"; } } private void textBox8_TextChanged(object sender, EventArgs e) { } private void txtChannel_TextChanged_1(object sender, EventArgs e) { butONOFF.Text = "ON"; } } }