Desktop_ConnectedBluetoothDevice.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Text;
  2. using BluetoothLENet;
  3. namespace InABox.Avalonia.Platform.Desktop;
  4. public class Desktop_ConnectedBluetoothDevice(BLEDevice device)
  5. : Desktop_BluetoothDevice(device), IConnectedBluetoothDevice
  6. {
  7. public async Task<bool> WriteBytesAsync(Guid serviceid, Guid characteristicid, byte[] data)
  8. {
  9. var service = Device.Services.FirstOrDefault(x=>x.Native.Uuid == serviceid);
  10. if (service != null)
  11. {
  12. var characteristic = service.Characteristics.FirstOrDefault(x=>x.Native.Uuid == characteristicid);
  13. if (characteristic != null)
  14. return await characteristic.WriteAsync(data);
  15. }
  16. return false;
  17. }
  18. public async Task<bool> WriteStringAsync(Guid serviceid, Guid characteristicid, string data)
  19. {
  20. try
  21. {
  22. var encoded = Encoding.UTF8.GetBytes(data);
  23. var result = await WriteBytesAsync(serviceid, characteristicid, encoded);
  24. return result;
  25. }
  26. catch (Exception e)
  27. {
  28. Console.WriteLine(e);
  29. return false;
  30. }
  31. }
  32. public async Task<byte[]?> ReadBytesAsync(Guid serviceid, Guid characteristicid)
  33. {
  34. var service = Device.Services.FirstOrDefault(x=>x.Native.Uuid == serviceid);
  35. if (service != null)
  36. {
  37. var characteristic = service.Characteristics.FirstOrDefault(x=>x.Native.Uuid == characteristicid);
  38. if (characteristic != null)
  39. return await characteristic.ReadAsync();
  40. }
  41. return [];
  42. }
  43. public async Task<String?> ReadStringAsync(Guid serviceid, Guid characteristicid)
  44. {
  45. var data = await ReadBytesAsync(serviceid,characteristicid);
  46. return data != null ? System.Text.Encoding.UTF8.GetString(data) : null;
  47. }
  48. }