This commit is contained in:
@@ -194,17 +194,25 @@ namespace AciTester.Services
|
||||
{
|
||||
await EnsureConnectedAsync();
|
||||
var regs = await ReadHoldingRegistersAsync(startAddress, 2);
|
||||
return (regs[0] << 16) | regs[1];
|
||||
|
||||
return regs[0]; // 暂时返回大端,您根据日志判断
|
||||
}
|
||||
|
||||
public async Task WriteInt32Async(ushort startAddress, int value)
|
||||
{
|
||||
await EnsureConnectedAsync();
|
||||
var bytes = BitConverter.GetBytes(value);
|
||||
if (BitConverter.IsLittleEndian) Array.Reverse(bytes);
|
||||
ushort high = (ushort)((bytes[0] << 8) | bytes[1]);
|
||||
ushort low = (ushort)((bytes[2] << 8) | bytes[3]);
|
||||
await _master.WriteMultipleRegistersAsync(_config.SlaveId, startAddress, new ushort[] { high, low });
|
||||
ushort[] dwellTimeRegisters = ConvertIntToRegisters(value);
|
||||
await _master.WriteMultipleRegistersAsync(1, startAddress, dwellTimeRegisters);
|
||||
}
|
||||
|
||||
// 将整数转换为寄存器数组(2个寄存器)
|
||||
private ushort[] ConvertIntToRegisters(int value)
|
||||
{
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
ushort[] registers = new ushort[2];
|
||||
registers[0] = BitConverter.ToUInt16(bytes, 0); // 第一个寄存器(低位)
|
||||
registers[1] = BitConverter.ToUInt16(bytes, 2); // 第二个寄存器(高位)
|
||||
return registers;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user