Browse Source

修正UInt32和string写入时的字节序问题

pull/22/head
Kevin 8 years ago
parent
commit
564d74cd76
  1. 19
      SCADA/Program/ModbusDriver/ModbusTCPDriver.cs

19
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;
}

Loading…
Cancel
Save