c#modbus读取两个16位寄存器转int32
Int32 aa2 = 0;
var registers = easyClient.ReadHoldingRegisters(addr, quantity);
// if (registers != null && registers.Length == 4)
// {
//// 解码64位浮点数
/// float value = registers[0] + (registers[1] << 16) + (registers[2] << 32) + (registers[3] << 48);
// Console.WriteLine($"64位浮点数值: {value}");
// }
if (registers != null && registers.Length == 2)
{
// 解码64位浮点数
Int16 reg1 = (Int16)registers[1];
string re1 = reg1.ToString("x");
Int16 reg0 = (Int16)registers[0];
string re2 = reg0.ToString("x");
string str3 = re1 + re2;
//byte bt3 = Convert.ToByte(str3);
aa2 = Convert.ToInt32(str3, 16);
return aa2;
//float value = registers[1] + (registers[0]);
//Console.WriteLine($"64位浮点数值: {value}");
}

浙公网安备 33010602011771号