Skip to content

3.5 Extends API methods to Machine and Utility

parallelbgls edited this page Jun 29, 2017 · 1 revision

Machine and Utility methods group are based on one base interface for each, IMachineMethod and IUtilityMethod. These two interfaces are empty but has the same extending steps. Following example only shows the way of IUtilityMethod.

IUtlityMethod is an empty interface.

    public interface IUtilityMethod
    {
    }

Author implements a single data write interface based on Modbus protocol in Modbus.Net.Modbus.

    public interface IUtilityMethodWriteSingle : IUtilityMethod
    {
        Task<bool> SetSingleDataAsync(string startAddress, object setContent);
    }

IUtilityMethodWriteSingle must inherits from IUtilityMethod due to the fact of GetUtilityMethods' template.

Implementing this interface in ModbusUtility.

    public class ModbusUtility : BaseUtility, IUtilityMethodTime, IUtilityMethodWriteSingle
    {
        public async Task<bool> SetSingleDataAsync(string startAddress, object setContent)
        {
            try
            {
                var inputStruct = new WriteSingleDataModbusInputStruct(SlaveAddress, startAddress, setContent,
                    (ModbusTranslatorBase)AddressTranslator, Endian);
                var outputStruct = await
                    Wrapper.SendReceiveAsync<WriteSingleDataModbusOutputStruct>(Wrapper[typeof(WriteSingleDataModbusProtocal)],
                        inputStruct);
                return outputStruct?.WriteValue.ToString() == setContent.ToString();
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> SetSingleDatas: {ConnectionString} error");
                return false;
            }
        }
    }

Then we finish extending "write single data" method group to ModbusUtility.

Home

Clone this wiki locally