Desktop_ConnectedBluetoothDevice.cs 1.8 KB

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