/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }