gpt4 book ai didi

c# - 为什么我没有从我的 BLE 设备发送到我的 xamarin 表单应用程序的 byte [] 中获得正确的值?

转载 作者:行者123 更新时间:2023-11-30 23:17:18 24 4
gpt4 key购买 nike

我正在从我的 BLE 设备发送:

BTLEserial.print ("one");
BTLEserial.print (",");
BTLEserial.print ("two");

所以我发送的是:“一,二”,我现在正在尝试获取这个值,但是使用我当前的代码,我得到的是 5444 并且我不太清楚为什么。

我使用这个插件:https://github.com/xabre/xamarin-bluetooth-le (插件.BLE)

这是我读取数据的方式:

var adapter = CrossBluetoothLE.Current.Adapter;

await adapter.ConnectToDeviceAsync(mydevice);

var service = await mydevice.GetServiceAsync(Guid.Parse("6e400001-b5a3-f393-e0a9-e50e24dcca9e"));
var services = await mydevice.GetServicesAsync();

var RXcharacteristics = await service.GetCharacteristicAsync(Guid.Parse("6e400003-b5a3-f393-e0a9-e50e24dcca9e"));
var characteristics = await service.GetCharacteristicsAsync();

int whatResult = 0;
string valueone;
string valuetwo;

RXcharacteristics.ValueUpdated += (sender, e) =>
{
var result = e.Characteristic.Value;

foreach (var items in result)
{
if (whatResult == 0)
{
valueone = Convert.ToString(items);
System.Diagnostics.Debug.Writeline(valueone);
whatResult++;
}
else {
valuetwo = Convert.ToString(items);
System.Diagnostics.Debug.Writeline(valuetwo);
whatResult = 0;
}
}

};

await RXcharacteristics.StartUpdatesAsync();

为什么我不能从我收到的结果中得到正确的数据?我也尝试使用 var result = e.Characteristic.StringValue; 但结果相同。

我用谷歌搜索并遇到了一个有同样问题的人: https://github.com/xabre/xamarin-bluetooth-le/issues/88

例如,他这样说,这表明我的设备将 CanUpdate 设置为 true。正如我上面所说,我成功地从我的代码中获取了数据,但我没有获得正确的值。

RXCharacteristic 有 CanWrite = false、CanRead = false、CanUpdate = true

如果我使用这个应用程序:

https://github.com/adafruit/Bluefruit_LE_Connect_v2

那是开源的(用swift编码)我可以成功获取到正确的值

最佳答案

github documentation for this library表示Value是字节数组

public override byte[] Value => _nativeCharacteristic.Value?.ToArray();

这意味着您应该尝试使用文本编码而不是对每个字节使用 foreach 循环 1

var result = e.Characteristic.Value;
var str = System.Text.Encoding.UTF8.GetString(result,0,result.Length);

<子>1。 Andy0708,2017 年 1 月 6 日星期五,Oksana,“如何将字节数组转换为字符串 ”,2012 年 7 月 25 日 16:39,https://stackoverflow.com/a/11654825/1026459

关于c# - 为什么我没有从我的 BLE 设备发送到我的 xamarin 表单应用程序的 byte [] 中获得正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41503704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com