示例#1
0
        public async Task <RunningParameter> GetRunningParameterAsync(
            GetRunningParameterRequest request,
            DateTime?deadline)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            PlcFrame response = await this.InvokeAsync(
                PlcFrame.Create(PlcMessageType.GetRunningParameterRequest, ByteString.Empty),
                deadline)
                                .ConfigureAwait(false);

            if (response.FrameHeader.MessageType != PlcMessageType.GetRunningParameterResponse)
            {
                throw new InvalidDataException(
                          "Response message type mismatch: " + response.FrameHeader.MessageType);
            }

            using var reader = new BinaryReader(new MemoryStream(response.FrameBody.ToByteArray()));
            return(new RunningParameter
            {
                SummerHeaterCelsiusDegree = reader.ReadSingle(),
                WinterHeaterCelsiusDegree = reader.ReadSingle(),
                ColdPowerKilowatt = reader.ReadSingle(),
                WarmPowerKilowatt = reader.ReadSingle(),
                WaterPumpFlowRateCubicMeterPerHour = reader.ReadSingle(),
                WaterPumpFrequencyHertz = reader.ReadSingle(),
            });
        }
示例#2
0
 public override AsyncUnaryCall <RunningParameter> GetRunningParameterAsync(GetRunningParameterRequest request, Metadata headers = null, DateTime?deadline = null, CancellationToken cancellationToken = default)
 {
     return(TestCalls.AsyncUnaryCall(
                Task.FromResult(RunningParameters[request.DeviceId]),
                Task.FromResult(new Metadata()),
                () => Status.DefaultSuccess,
                () => new Metadata(),
                () => { }));
 }
示例#3
0
 public override Task <RunningParameter> GetRunningParameter(
     GetRunningParameterRequest request,
     ServerCallContext context)
 {
     return(this.Invoke(
                (client, request, deadline) => client.GetRunningParameterAsync(request, deadline),
                request.DeviceId,
                request,
                context));
 }