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(); } public const int Port = 502; private void timerScan_Tick_1(object sender, EventArgs e) { try { byte slaveID = 1; ushort startAddress = 0; ushort numInputs = ushort.Parse(txtChannelNumber.Text); ushort[] inputs = master.ReadInputRegisters(slaveID, startAddress, numInputs); for (int i = 0; i < numInputs; i++) { points.Rows[i][1]=Convert.ToInt32(inputs[i]);//input the value to data table } } catch (Exception ex) { btDisconnect_Click_1(sender, e); MessageBox.Show(ex.Message); } } private TcpClient masterTcpClient; private ModbusIpMaster master; 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); txtChannelNumber.Enabled = false; btConnect.Enabled = false; btDisconnect.Enabled = true; timerScan.Enabled = true; ushort numInputs = ushort.Parse(txtChannelNumber.Text); for (int i = 0; i < numInputs; i++) { points.Rows.Add(new object[] { i, 0 });//make a Row; } } private void btDisconnect_Click_1(object sender, EventArgs e) { masterTcpClient.Close(); btConnect.Enabled = true; btDisconnect.Enabled = false; timerScan.Enabled = false; txtChannelNumber.Enabled = true; points.Rows.Clear();//clear row } private void Form1_Load(object sender, EventArgs e) { try { points.Columns.Add(new DataColumn("Channel", typeof(int)));//make a columns points.Columns.Add(new DataColumn("Value", typeof(int))); dataGrid1.DataSource = points; tableStyle.MappingName = "Points"; dataGrid1.TableStyles.Add(tableStyle); } catch (Exception ex) { dataGrid1.TableStyles["Points"].Dispose(); tableStyle.Dispose(); } } System.Data.DataTable points = new System.Data.DataTable("Points"); DataGridTableStyle tableStyle = new DataGridTableStyle(); private void dataGrid1_CurrentCellChanged(object sender, EventArgs e) { } } }