private void GetBool(byte[] data, int byteNum, ModbusVariable <bool> variable) { int bitNum = variable.Address.BitNum > 7 ? variable.Address.BitNum - 8 : variable.Address.BitNum; if (byteNum % 2 == 0) { ++byteNum; } else { --byteNum; } bool value = (data[byteNum] & (1 << bitNum)) != 0; if (value) { if (!variable.Value) { data[byteNum] &= (byte)~(1 << bitNum); } } else { if (variable.Value) { data[byteNum] |= (byte)(1 << bitNum); } } }
private void SetBool(byte[] data, int byteNum, ModbusVariable <bool> variable) { int bitNum = variable.Address.BitNum > 7 ? variable.Address.BitNum - 8 : variable.Address.BitNum; if (byteNum % 2 == 0) { ++byteNum; } else { --byteNum; } bool value = (data[byteNum] & (1 << bitNum)) != 0; variable.SetValue(value); }
private void SetString(byte[] data, int byteNum, ModbusVariable <string> variable) { variable.SetValue(Encoding.ASCII.GetString(data.GetRange(byteNum, variable.Size))); }
private void SetDouble(byte[] data, int byteNum, ModbusVariable <double> variable) { variable.SetValue(BitConverter.ToDouble(data.GetRange(byteNum, variable.Size), 0)); }
private void SetFloat(byte[] data, int byteNum, ModbusVariable <float> variable) { variable.SetValue(BitConverter.ToSingle(data.GetRange(byteNum, variable.Size), 0)); }
private void SetULong(byte[] data, int byteNum, ModbusVariable <ulong> variable) { variable.SetValue(BitConverter.ToUInt64(data.GetRange(byteNum, variable.Size), 0)); }
private void SetInt(byte[] data, int byteNum, ModbusVariable <int> variable) { variable.SetValue(BitConverter.ToInt32(data.GetRange(byteNum, variable.Size), 0)); }
private void SetUShort(byte[] data, int byteNum, ModbusVariable <ushort> variable) { variable.SetValue(BitConverter.ToUInt16(data.GetRange(byteNum, variable.Size), 0)); }
private void SetByte(byte[] data, int byteNum, ModbusVariable <byte> variable) { variable.SetValue(data[byteNum]); }
private void GetString(byte[] data, int byteNum, ModbusVariable <string> variable) { byte[] temp = ReverseData(Encoding.ASCII.GetBytes(variable.Value)); Array.Copy(temp, 0, data, byteNum, temp.Length); }
private void GetDouble(byte[] data, int byteNum, ModbusVariable <double> variable) { byte[] temp = ReverseData(BitConverter.GetBytes(variable.Value)); Array.Copy(temp, 0, data, byteNum, temp.Length); }
private void GetByte(byte[] data, int byteNum, ModbusVariable <byte> variable) { data[byteNum] = variable.Value; }