public void TestReadDuringExecution(int delay) { var openPortResult = client.RequestConnectToPort(new ConnectionRequest() { Connect = true, ComPort = _comPort }); Assert.IsNull(openPortResult.Error, "Port Open Failed"); var cancel = new CancellationTokenSource(); var currentReadingTask = Task.Factory.StartNew(() => { while (!cancel.IsCancellationRequested) { var currentStatusRequest = new CurrentStatusRequest(); var currentStatusResponse = client.RequestCurrentStatus(currentStatusRequest); Assert.IsNull(currentStatusResponse.Error, "Port Open Failed"); _writer.WriteLine($"Current: {currentStatusResponse.Current}"); Task.Delay(delay).Wait(); } }, cancel.Token); FocusExecutionCommonCode(5000); cancel.Cancel(); currentReadingTask.Wait(1000); }
/// <summary> /// Get current reading /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task <CurrentStatusResponse> RequestCurrentStatus(CurrentStatusRequest request, ServerCallContext context) { var currentResponse = new CurrentStatusResponse(); string result = ""; currentResponse.Error = InvokeCommandWithResponse("i", null, ref result); if (currentResponse.Error != null) { return(Task.FromResult(currentResponse)); } try { currentResponse.Current = Double.Parse(result); } catch (Exception e) { currentResponse.Error = ServiceHelper.BuildError(e, Level.Error); return(Task.FromResult(currentResponse)); } return(Task.FromResult(currentResponse)); }