public int WriteUShorts(DeviceAddress deviceAddress, ushort[] datas) { ushort startAddress; if (Function.EnableWriteRegister(deviceAddress.Address, out startAddress)) { byte[] valueBytes = UnsafeNetConvert.BytesPerversion(UnsafeNetConvert.UShortsToBytes(datas, deviceAddress.ByteOrder)); byte[] sendBytes = getWriteMulRegisterHeader((byte)deviceAddress.SalveId, startAddress, valueBytes); return(writeBytes(sendBytes)); } else { return(-1); } }
public int WriteFloat(DeviceAddress deviceAddress, float datas) { ushort startAddress; if (Function.EnableWriteRegister(deviceAddress.Address, out startAddress)) { var valueBytes = (deviceAddress.ByteOrder == ByteOrder.BigEndian) ? UnsafeNetConvert.FloatToBytes(datas, deviceAddress.ByteOrder) : UnsafeNetConvert.BytesPerversion(UnsafeNetConvert.FloatToBytes(datas, deviceAddress.ByteOrder)); byte[] sendBytes = getWriteMulRegisterHeader((byte)deviceAddress.SalveId, startAddress, valueBytes); return(writeBytes(sendBytes)); } else { return(-1); } }
private byte[] readRegister(DeviceAddress deviceAddress, int lenght) { byte salveID = (byte)deviceAddress.SalveId; ushort startAddress; byte funcCode = (byte)Function.GetReadFunctionCode(deviceAddress.Address, out startAddress); if (funcCode == 3 || funcCode == 4) { //若byteOrder为bigEndian不需要颠倒word高低位 return((deviceAddress.ByteOrder == ByteOrder.BigEndian)? readBytes(salveID, startAddress, funcCode, (ushort)lenght) : UnsafeNetConvert.BytesPerversion(readBytes(salveID, startAddress, funcCode, (ushort)lenght))); } else { return(null); } }