public override Task <ResponseGetI2C> GetI2C(RequestGetI2C request, ServerCallContext context) { try { var b = common.I2CController.Read( request.BusId, request.DevAddress, request.RegisterAddress, request.ReadLength); return(Task.FromResult(new ResponseGetI2C() { Query = request, Response = Google.Protobuf.ByteString.CopyFrom(b) })); } catch (Exception e) { return(Task.FromException <ResponseGetI2C>(e)); } }
private void btnReadI2C_Click(object sender, RoutedEventArgs e) { try { if (int.TryParse(txtBusId.Text, out _) && int.TryParse(txtDevAddr.Text, out _) && int.TryParse(txtRegAddr.Text, out _) && int.TryParse(txtReadLength.Text, out _)) { var m = new RequestGetI2C() { BusId = int.Parse(txtBusId.Text), DevAddress = int.Parse(txtDevAddr.Text), RegisterAddress = int.Parse(txtRegAddr.Text), ReadLength = int.Parse(txtReadLength.Text) }; new System.Threading.Thread(() => { try { var rsp = client.GetI2C(m, deadline: DateTime.UtcNow.AddMilliseconds(5000)); Console.WriteLine("Read I2C: " + ByteArrayToString(rsp.Response.ToByteArray())); this.lblI2C.Dispatcher.Invoke((Action)(() => { this.lblI2C.Text = ByteArrayToString(rsp.Response.ToByteArray()); })); } catch (Exception err) { Console.WriteLine(err); } }).Start(); } else { MessageBox.Show("Input Error", $"Check inputs", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception err) { MessageBox.Show("Input Error", $"{err.Message}", MessageBoxButton.OK, MessageBoxImage.Error); } }