【发布时间】: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<string>(); -
您的转储可能具有误导性。您确定字符串 BLEresultnew 中的任何地方都没有换行符 \n 吗?所有线条的最大宽度相同。报告时是否在某个宽度上强制中断?
-
你应该使用
StringBuilder -
@Jason 是的,它只是在 BLEresultnew 中一一添加字符串,但不存储它。它正在改变。
-
那是因为您每次都通过创建一个新对象来丢弃以前的结果
标签: c# xamarin.forms append bluetooth-lowenergy