コード例 #1
0
        /// <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();
            }
        }
コード例 #2
0
        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();
            }
        }