/// <summary> /// Initialization of slave. /// </summary> /// <param name="address"></param> /// <param name="timeout"></param> /// <returns></returns> public async Task <bool> Ping(byte address, TimeSpan timeout) { var resetEvent = new AutoResetEvent(false); _binding.PacketReceived += (sender, e) => { switch (e.Packet) { case AckFrame frame: { resetEvent.Set(); } break; } }; try { await _binding.ConnectAsync(); await _binding.SendAsync(new ShortFrame((byte)ControlMask.SND_NKE, address)); return(resetEvent.WaitOne(timeout)); } finally { await _binding.DisconnectAsync(); } }
public async Task SetMeterAddress(byte address, byte newaddress) { var length = (byte)0x03; var data = new byte[length]; data[0] = 0x01; data[1] = 0x7a; data[2] = newaddress; try { await _binding.ConnectAsync(); await _binding.SendAsync(new LongFrame((byte)ControlMask.SND_UD, (byte)ControlInformation.DATA_SEND, address, data, length)); } finally { await _binding.DisconnectAsync(); } }