コード例 #1
0
        /// <summary>
        ///  Helper function reading discrete inputs.
        /// </summary>
        /// <param name="console"></param>
        /// <param name="client"></param>
        /// <param name="slave"></param>
        /// <param name="number"></param>
        /// <param name="offset"></param>
        /// <param name="header"></param>
        public static void ReadingDiscreteInputs(IConsole console,
                                                 IModbusClient client,
                                                 byte slave,
                                                 ushort number,
                                                 ushort offset,
                                                 bool header = true)
        {
            if (number == 1)
            {
                if (header)
                {
                    console.Out.WriteLine($"Reading a single discrete input[{offset}]");
                }
                bool[] values = client.ReadCoils(slave, offset, number);
                console.Out.WriteLine($"Value of discrete input[{offset}] = {values[0]}");
            }
            else
            {
                if (header)
                {
                    console.Out.WriteLine($"Reading {number} discrete inputs starting at {offset}");
                }
                bool[] values = client.ReadCoils(slave, offset, number);

                for (int index = 0; index < values.Length; ++index)
                {
                    console.Out.WriteLine($"Value of discrete input[{offset + index}] = {values[index]}");
                }
            }
        }
コード例 #2
0
        private void ProcessRegisterGroup(IModbusClient client, Register register)
        {
            var dumpRepository = _unitOfWork.DumpsRepository;

            switch (register.Type)
            {
            case RegisterType.Coil:
                dumpRepository.AddRegisterResult(register, client.ReadCoils(register.Offset, register.Count));
                break;

            case RegisterType.DiscreteInput:
                dumpRepository.AddRegisterResult(register, client.ReadInputRegisters(register.Offset, register.Count));
                break;

            case RegisterType.HoldingRegister:
                dumpRepository.AddRegisterResult(register, client.ReadHoldingRegisters(register.Offset, register.Count));
                break;

            case RegisterType.Input:
                dumpRepository.AddRegisterResult(register, client.ReadInputs(register.Offset, register.Count));
                break;
            }

            //_logger.LogInformation("{date} - Register {num} processed", DateTimeOffset.Now, register.Id);
        }