diff --git a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs index 0829f80..04d680f 100644 --- a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs @@ -510,7 +510,15 @@ namespace ModbusDriver public int WriteUInt32(DeviceAddress address, uint value) { if (address.DBNumber != 3) return -1; - var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes((uint)IPAddress.HostToNetworkOrder((int)value))); + byte[] b = BitConverter.GetBytes((int)value); + for (int j = 0; j < b.Length / 2; j++) + { + byte a = b[j * 2]; + b[j * 2] = b[j * 2 + 1]; + b[j * 2 + 1] = a; + } + //b = BitConverter.GetBytes((uint) IPAddress.HostToNetworkOrder((int) value)); + var data = WriteMultipleRegister(address.Area, address.Start, b); return data == null ? -1 : 0; } @@ -531,7 +539,14 @@ namespace ModbusDriver public int WriteString(DeviceAddress address, string str) { if (address.DBNumber != 3) return -1; - var data = WriteMultipleRegister(address.Area, address.Start, Encoding.ASCII.GetBytes(str)); + byte[] b = Encoding.ASCII.GetBytes(str); + for (int j = 0; j < b.Length / 2; j++) + { + byte a = b[j * 2]; + b[j * 2] = b[j * 2 + 1]; + b[j * 2 + 1] = a; + } + var data = WriteMultipleRegister(address.Area, address.Start, b); return data == null ? -1 : 0; }