예제 #1
0
        /// <summary>
        ///     写时间
        /// </summary>
        /// <param name="setTime">需要写入的时间</param>
        /// <returns>写入是否成功</returns>
        public async Task <bool> SetTimeAsync(DateTime setTime)
        {
            try
            {
                var inputStruct  = new SetSystemTimeModbusInputStruct(SlaveAddress, setTime);
                var outputStruct =
                    await ProtocolWrapper.SendReceiveAsync <SetSystemTimeModbusOutputStruct>(
                        ProtocolWrapper[typeof(SetSystemTimeModbusProtocal)], inputStruct);

                return(outputStruct?.WriteCount > 0);
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> SetTime: {ConnectionString} error");
                return(false);
            }
        }
예제 #2
0
        /// <summary>
        ///     读时间
        /// </summary>
        /// <returns>设备的时间</returns>
        public async Task <DateTime> GetTimeAsync()
        {
            try
            {
                var inputStruct  = new GetSystemTimeModbusInputStruct(SlaveAddress);
                var outputStruct =
                    await ProtocolWrapper.SendReceiveAsync <GetSystemTimeModbusOutputStruct>(
                        ProtocolWrapper[typeof(GetSystemTimeModbusProtocal)], inputStruct);

                return(outputStruct?.Time ?? DateTime.MinValue);
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> GetTime: {ConnectionString} error");
                return(DateTime.MinValue);
            }
        }
예제 #3
0
        /// <summary>
        ///     写数据
        /// </summary>
        /// <param name="startAddress">起始地址</param>
        /// <param name="setContent">需要设置的数据</param>
        /// <returns>设置是否成功</returns>
        public async Task <bool> SetSingleDataAsync(string startAddress, object setContent)
        {
            try
            {
                var inputStruct = new WriteSingleDataModbusInputStruct(SlaveAddress, startAddress, setContent,
                                                                       (ModbusTranslatorBase)AddressTranslator, Endian);
                var outputStruct = await
                                   ProtocolWrapper.SendReceiveAsync <WriteSingleDataModbusOutputStruct>(ProtocolWrapper[typeof(WriteSingleDataModbusProtocal)],
                                                                                                        inputStruct);

                return(outputStruct?.WriteValue.ToString() == setContent.ToString());
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> SetSingleDatas: {ConnectionString} error");
                return(false);
            }
        }
예제 #4
0
        /// <summary>
        ///     写数据
        /// </summary>
        /// <param name="startAddress">起始地址</param>
        /// <param name="setContents">需要设置的数据</param>
        /// <returns>设置是否成功</returns>
        public override async Task <bool> SetDatasAsync(string startAddress, object[] setContents)
        {
            try
            {
                var inputStruct = new WriteDataModbusInputStruct(SlaveAddress, startAddress, setContents,
                                                                 AddressTranslator, Endian);
                var outputStruct = await
                                   ProtocolWrapper.SendReceiveAsync <WriteDataModbusOutputStruct>(ProtocolWrapper[typeof(WriteDataModbusProtocal)],
                                                                                                  inputStruct);

                return(outputStruct?.WriteCount == setContents.Length);
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> SetDatas: {ConnectionString} error");
                return(false);
            }
        }
예제 #5
0
        /// <summary>
        ///     读数据
        /// </summary>
        /// <param name="startAddress">起始地址</param>
        /// <param name="getByteCount">获取字节个数</param>
        /// <returns>获取的结果</returns>
        public override async Task <byte[]> GetDatasAsync(string startAddress, int getByteCount)
        {
            try
            {
                var inputStruct = new ReadDataModbusInputStruct(SlaveAddress, startAddress,
                                                                (ushort)getByteCount, AddressTranslator);
                var outputStruct = await
                                   ProtocolWrapper.SendReceiveAsync <ReadDataModbusOutputStruct>(ProtocolWrapper[typeof(ReadDataModbusProtocal)],
                                                                                                 inputStruct);

                return(outputStruct?.DataValue);
            }
            catch (Exception e)
            {
                Log.Error(e, $"ModbusUtility -> GetDatas: {ConnectionString} error");
                return(null);
            }
        }