【问题标题】:How to join the value coming in BLE notification in xamarin forms?如何以 xamarin 形式加入 BLE 通知中的值?
【发布时间】:2021-04-13 06:02:17
【问题描述】:

我在 BLE 通知中以 20 字节块的形式获取数据。我正在将其转换为字符串,但我需要将所有这些字符串连接在一起。这是我的代码

characteristicRead.ValueUpdated += (o, e) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    //var readvalue2 = characteristics.Value;
                    var bytes = e.Characteristic.Value;
                    //var readvalue = await characteristics.ReadAsync();
                    BLEresultnew = System.Text.Encoding.UTF8.GetString(bytes);

                    Console.WriteLine(BLEresultnew);
                    var termsList = new List<string>();
                    //var joinedStrings = termsList.Join(",");
                    termsList.Add(BLEresultnew);
                    concat = String.Join(" ", termsList.ToArray());
                    //int listdata=termsList.Count();
                    //string valuel = listdata.ToString();
                });
            };
            await characteristicRead.StartUpdatesAsync();

这是来自日志的数据,我需要加入并显示在字符串或数组中。

01-07 13:07:07.340 I/mono-stdout( 4797): {"name":"Lime","stat
us":"Available"},{"n
01-07 13:07:07.448 I/mono-stdout( 4797): us":"Available"},{"n
ame":"Peach", "statu
01-07 13:07:07.568 I/mono-stdout( 4797): ame":"Peach", "statu
s":"Available"},{{"n
01-07 13:07:07.650 I/mono-stdout( 4797): s":"Available"},{{"n

我已经尝试过 string.Join 但它不起作用。我已经尝试过字符串生成器,但它仍然没有加入所有字符串,如下所示。

Console.WriteLine(BLEresultnew);
                    StringBuilder sb = new StringBuilder(BLEresultnew);
                   //sb.Append(BLEresultnew);
                    concat= sb.Append(BLEresultnew).ToString();

有什么建议可以解决这个问题吗?

【问题讨论】:

  • 您每次都在创建一个新的空termsList - var termsList = new List&lt;string&gt;();
  • 您的转储可能具有误导性。您确定字符串 BLEresultnew 中的任何地方都没有换行符 \n 吗?所有线条的最大宽度相同。报告时是否在某个宽度上强制中断?
  • 你应该使用StringBuilder
  • @Jason 是的,它只是在 BLEresultnew 中一一添加字符串,但不存储它。它正在改变。
  • 那是因为您每次都通过创建一个新对象来丢弃以前的结果

标签: c# xamarin.forms append bluetooth-lowenergy


【解决方案1】:

StringBuilder 效率更高,但只需这样做就可以了(假设concat 是一个类级别的变量)

concat += BLEresultnew;

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多