我正在创建一个能够成功连接到BLE设备的BLE应用。我也能够阅读GATT的特征。但是当我尝试执行写操作时,出现异常
用yyy写入特征时设备xxx已断开连接
这是我的代码
private async Task<string> ProcessDeviceInformationService(IService deviceInfoService)
{
try
{
await adapter.ConnectToDeviceAsync(device);
var sb = new StringBuilder("Getting information from Device Information service: \n");
var characteristics = await deviceInfoService.GetCharacteristicsAsync();
var characteristic = await deviceInfoService.GetCharacteristicAsync(Guid.Parse("00002b0f-0000-1000-8000-00805f9b34fb"));
//{
try
{
deviceInfoService.GetCharacteristicAsync(GattCharacteristicIdentifiers.DataExchange);
if (characteristic != null)
{
var sbnew = new StringBuilder("BLE Characteristics\n");
byte[] senddata = Encoding.UTF8.GetBytes(string.IsNullOrEmpty(SendMessageLabel.Text) ? "0x21" : SendMessageLabel.Text);
await Task.Delay(300);
var newbytes = await characteristic.WriteAsync(senddata);
byte[] characteristicsvalue = characteristic.Value;
var str = Encoding.UTF8.GetString(characteristicsvalue);
sbnew.AppendLine($"Characteristics found on this device: {string.Join(", ", str.ToString())}");
CharactericsLabel.Text = sbnew.ToString();
}
}
catch (Exception ex)
{
return ex.Message;
}
return CharactericsLabel.Text;
}
catch (Exception ex)
{
return ex.ToString();
}
}
经过一番搜索后,我发现我需要传递十六进制值,即使我尝试发送十六进制值(如您在代码中看到的那样),也无法正常工作。对于android,它的工作正常,但对于iOS,它仍然显示此异常。我正在使用设备Iphone 8 plus,并且操作系统版本的Iphone为13.5.1。写入操作在浅蓝色应用程序中有效,该应用程序是从iOS的App Store下载的。我的写类型设置为default,它是带有response的写。但这仅在iOS部分为我的xamarin应用程序提供了例外。我正在使用Plugin.BLE的最新稳定版本2.1.1。我不知道如何解决这个任何建议?
我通过从外围设备获取对特性无响应的写入来修复此异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句