EasyModbusCore
网络的建立
cs
using EasyModbus;
// 创建Modbus客户端
ModbusClient modbusClient;
// 创建Modbus客户端实例
modbusClient = new ModbusClient(textBox_IP.Text, int.Parse(textBox_port.Text)); // IP地址和端口
//连接客户端
modbusClient.Connect();
if (modbusClient.Connected)
{
Console.WriteLine("连接到客户端");
MessageBox.Show("连接成功");
}
//断联
modbusClient.Disconnect();
MessageBox.Show("断开连接");
写入寄存器
写入一个寄存器
cs
// 地址,数据
modbusClient.WriteSingleRegister(int.Parse(textBox_writeAddress1.Text), int.Parse(textBox_writeData1.Text));
写入多个寄存器
cs
// textBox_writeDataS.Text是以','分割字符串数组
//.Trim() //去除字符串首尾空白
//.Split(',') // 以【逗号】为分隔符,把字符串切成字符串数组
string[] strArr = textBox_writeDataS.Text.Trim().Split(',');
// 获取到需要写入的多个数据
int[] holdingRegisters = new int[strArr.Length];
for (int i = 0; i < strArr.Length; i++)
{
holdingRegisters[i] = int.Parse(strArr[i].Trim());
}
//起始地址,数组数据
modbusClient.WriteMultipleRegisters(Convert.ToInt32(textBox_writeAddressS.Text), holdingRegisters);
读取寄存器
读取多个寄存器
一个:
cs
//读取起始地址,读取个数
int[] readValue =modbusClient.ReadHoldingRegisters(Convert.ToInt32(textBox_readAdress1.Text), 1);
//读取到的数据,用标签Lable显示在窗体应用上
label_readData1.Text = Convert.ToString(readValue[0]);
多个:
cs
//读取多个寄存器
int[] readValueS = modbusClient.ReadHoldingRegisters(Convert.ToInt32(textBox_readAddressS.Text), Convert.ToInt32(textBox_readAddressNum.Text));
//将int数组 转化为字符串 每个数组用","分隔
string dataTextS = string.Join(",", readValueS);
//显示在窗体应用标签上
label_readValues.Text = dataTextS;
变量类型转换
string转int
int.Parse(文本字符串变量);
Convert.ToInt32(文本字符串变量);
int转string
Convert.ToString(int型变量);
string dataTextS = string.Join(",", int型数组变量); int型数组变量转为字符串,每个数组用","分隔。
Trim().Split(',')