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