public TValue[] Read <TValue>(string address, ushort length) { int Address = DMT.DevToAddrW("DVP", address, Station); if (typeof(TValue) == typeof(bool)) { bool[] b = busTcpClient.ReadCoil($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(ushort)) { ushort[] b = busTcpClient.ReadUInt16($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(int)) { int[] b = busTcpClient.ReadInt32($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(uint)) { uint[] b = busTcpClient.ReadUInt32($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(long)) { long[] b = busTcpClient.ReadInt64($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(ulong)) { ulong[] b = busTcpClient.ReadUInt64($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(short)) { short[] b = busTcpClient.ReadInt16($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(double)) { double[] b = busTcpClient.ReadDouble($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(float)) { float[] b = busTcpClient.ReadFloat($"{Address}", length).Content; return((TValue[])(object)b); } if (typeof(TValue) == typeof(string)) { string b = busTcpClient.ReadString($"{Address}", length).Content; return((TValue[])(object)b); } throw new InvalidOperationException(string.Format("type '{0}' not supported.", typeof(TValue))); }
public byte[] ReadHoldingRegisters(byte slaveAddress, string startAddress, ushort nuMBErOfPoints) { var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = ReadHoldingRegistersMessage(slaveAddress, Convert.ToUInt32(Address), nuMBErOfPoints); SerialAdaper.WriteLine(frame); Thread.Sleep(DELAY); var buffReceiver = SerialAdaper.ReadLine(); if (string.IsNullOrEmpty(buffReceiver)) { return new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 } } ; var tempStrg = buffReceiver.Substring(1, buffReceiver.Length - 2); var messageReceived = Conversion.HexToBytes(tempStrg); if (buffReceiver.Length == 10) { ModbusExcetion(messageReceived); } var data = new byte[messageReceived[2]]; Array.Copy(messageReceived, 3, data, 0, data.Length); return(data); }
public byte[] ReadCoilStatus(byte slaveAddress, string startAddress, ushort nuMBErOfPoints) { var stopwatch = Stopwatch.StartNew(); var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = ReadCoilStatusMessage(slaveAddress, $"{Address}", nuMBErOfPoints); stopwatch.Stop(); // RequestAndResponseMessage _RequestAndResponseMessage = new RequestAndResponseMessage("RequestRead", frame); EthernetAdaper.Write(frame); Thread.Sleep(DELAY); var buffReceiver = EthernetAdaper.Read(); if (FUNCTION_01 != buffReceiver[7]) { var errorbytes = new byte[3]; Array.Copy(buffReceiver, 6, errorbytes, 0, errorbytes.Length); ModbusExcetion(errorbytes); } int SizeByte = buffReceiver[8]; // Số lượng byte dữ liệu thu được. var data = new byte[SizeByte]; Array.Copy(buffReceiver, 9, data, 0, data.Length); // Dữ liệu cần lấy bắt đầu từ byte có chỉ số 9 trong buffReceive. return(Bit.ToByteArray(Bit.ToArray(data))); }
public byte[] WriteSingleRegister(byte slaveAddress, string startAddress, byte[] values) { var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = WriteSingleRegisterMessage(slaveAddress, $"{Address}", values); SerialAdaper.Write(frame, 0, frame.Length); Thread.Sleep(DELAY); var buffReceiver = SerialAdaper.Read(); if (buffReceiver.Length == 5) { ModbusExcetion(buffReceiver); } return(buffReceiver); }
public bool Write(string address, dynamic value) { int Address = DMT.DevToAddrW("DVP", address, Station); if (value is bool) { busTcpClient.Write($"{Address}", value); } else { busTcpClient.Write($"{Address}", value); } return(true); }
public byte[] WriteSingleRegister(byte slaveAddress, string startAddress, byte[] values) { var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = WriteSingleRegisterMessage(slaveAddress, Convert.ToUInt32(Address), values); SerialAdaper.WriteLine(frame); Thread.Sleep(DELAY); var buffReceiver = SerialAdaper.ReadLine(); var tempStrg = buffReceiver.Substring(1, buffReceiver.Length - 2); var data = Conversion.HexToBytes(tempStrg); if (buffReceiver.Length == 10) { ModbusExcetion(data); } return(data); }
public byte[] ReadHoldingRegisters(byte slaveAddress, string startAddress, ushort nuMBErOfPoints) { var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = ReadHoldingRegistersMessage(slaveAddress, $"{Address}", nuMBErOfPoints); SerialAdaper.Write(frame, 0, frame.Length); Thread.Sleep(DELAY); var buffReceiver = SerialAdaper.Read(); if (buffReceiver.Length == 5) { ModbusExcetion(buffReceiver); } var data = new byte[buffReceiver.Length - 5]; Array.Copy(buffReceiver, 3, data, 0, data.Length); return(data); }
public byte[] WriteMultipleRegisters(byte slaveAddress, string startAddress, byte[] values) { var Address = DMT.DevToAddrW("DVP", startAddress, slaveAddress); var frame = WriteMultipleRegistersMessage(slaveAddress, $"{Address}", values); EthernetAdaper.Write(frame); // RequestAndResponseMessage _RequestAndResponseMessage = new RequestAndResponseMessage("RequestWrite", frame); Thread.Sleep(DELAY); var buffReceiver = EthernetAdaper.Read(); if (FUNCTION_16 != buffReceiver[7]) { var errorbytes = new byte[3]; Array.Copy(buffReceiver, 6, errorbytes, 0, errorbytes.Length); ModbusExcetion(errorbytes); } return(buffReceiver); }
public bool[] ReadDiscrete(string address, ushort length) { int Address = DMT.DevToAddrW("DVP", address, Station); return(busTcpClient.ReadDiscrete($"{Address}", length).Content); }