Доступ к методам и членам класса Abstract - PullRequest
0 голосов
/ 04 октября 2018

Я занимаюсь разработкой формы Windows для работы в качестве главного симулятора Modbus.Я использую библиотеку NModbus.Я пытаюсь отобразить ответ, полученный от ведомого после операции чтения или записи, на экране.Например, вот код функции чтения катушки из библиотеки NModbus,

public class ModbusIpMaster : ModbusMaster
    {
        private ModbusIpMaster(ModbusTransport transport)
            : base(transport)
        {
        }


    /// Read from 1 to 2000 contiguous coils status.
    /// </summary>
   /// <param name="startAddress">Address to begin reading.</param>
   /// <param name="numberOfPoints">Number of coils to read.</param>
  /// <returns>Coils status</returns>
       public bool[] ReadCoils(ushort startAddress, ushort numberOfPoints)
       {
            return base.ReadCoils(Modbus.DefaultIpSlaveUnitId, startAddress, 
          numberOfPoints);
       }
}

Метод ReadCoils находится в базовом классе ModbusMaster, который является абстрактным классом.

public abstract class ModbusMaster : ModbusDevice, IModbusMaster
    {
        internal ModbusMaster(ModbusTransport transport)
            : base(transport)
        {
        }
        public bool[] ReadCoils(byte slaveAddress, ushort startAddress, ushort 
                                      numberOfPoints)
        {
            ValidateNumberOfPoints("numberOfPoints", numberOfPoints, 2000);

            return ReadDiscretes(Modbus.ReadCoils, slaveAddress, startAddress, 
                                    numberOfPoints);
        }
        internal bool[] ReadDiscretes(byte functionCode, byte slaveAddress, 
                                ushort startAddress, ushort numberOfPoints)
        {
            ReadCoilsInputsRequest request = new 
                      ReadCoilsInputsRequest(functionCode, slaveAddress, 
                                              startAddress, numberOfPoints);
            ReadCoilsInputsResponse response = 
                    Transport.UnicastMessage<ReadCoilsInputsResponse>(request);

            return response.Data.Slice(0, request.NumberOfPoints).ToArray();
        }
}

я хочу получить доступметод Read Discrete для использования ReadCoilsInputResponse для отображения ответа, содержащего byountount, идентификатор ведомого, данные и т. д. Но когда я создаю экземпляр класса ModbusIPMaster и использую этот экземпляр для доступа к методу Read Discrete, я не могу получить к нему доступ.Может кто-нибудь помочь мне решить это?или есть какой-либо другой способ отобразить полный полученный ответ?Ниже приведена ссылка на библиотеку NModbus https://github.com/NModbus/NModbus

1 Ответ

0 голосов
/ 04 октября 2018

ReadDiscretes объявлен внутренним.Вы в одной сборке?Если нет, то, возможно, вам следует рассмотреть вопрос об объявлении его публичным?

...