From 3e3a0cf4c4b056e2f3d16f55d326a98ec066daca Mon Sep 17 00:00:00 2001 From: shinichi Date: Wed, 9 Sep 2020 12:27:37 +0200 Subject: [PATCH 1/3] wip lunch break --- ProftaakRH/BLEReciever.cs | 69 +++++++++++++++++++++++++++++++++++++++ ProftaakRH/FietsDemo.cs | 17 +++++----- ProftaakRH/Main.cs | 13 +++++++- 3 files changed, 89 insertions(+), 10 deletions(-) diff --git a/ProftaakRH/BLEReciever.cs b/ProftaakRH/BLEReciever.cs index 1105362..d0d4d0f 100644 --- a/ProftaakRH/BLEReciever.cs +++ b/ProftaakRH/BLEReciever.cs @@ -1,11 +1,80 @@ using System; using System.Collections.Generic; using System.Text; +using Avans.TI.BLE; +using System.Threading; + namespace Hardware { class BLEReciever { IDataConverter dataConverter; + + public BLEReciever(IDataConverter dataConverter) + { + this.dataConverter = dataConverter; + } + + public async void Connect() + { + int errorCode = 0; + BLE bleBike = new BLE(); + BLE bleHeart = new BLE(); + Thread.Sleep(1000); // We need some time to list available devices + + // List available devices + List bleBikeList = bleBike.ListDevices(); + Console.WriteLine("Devices found: "); + foreach (var name in bleBikeList) + { + Console.WriteLine(name); + if (name.Contains("Avans Bike")) + { + Connect(name); + Console.WriteLine("connecting to {0}", name); + break; + } + } + } + public async void Connect(string deviceName) + { + int errorCode = 0; + BLE bleBike = new BLE(); + BLE bleHeart = new BLE(); + + errorCode = errorCode = await bleBike.OpenDevice(deviceName); + // __TODO__ Error check + + var services = bleBike.GetServices; + foreach (var service in services) + { + Console.WriteLine($"Service: {service}"); + } + + // Set service + errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"); + // __TODO__ error check + + // Subscribe + bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"); + + // Heart rate + errorCode = await bleHeart.OpenDevice(deviceName); + + await bleHeart.SetService("HeartRate"); + + bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); + } + + private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) + { + Console.WriteLine("Received from {0}: {1}, {2}", e.ServiceName, + BitConverter.ToString(e.Data).Replace("-", " "), + Encoding.UTF8.GetString(e.Data)); + //send to dataconverter + } } } diff --git a/ProftaakRH/FietsDemo.cs b/ProftaakRH/FietsDemo.cs index d95c24f..eb6d7fb 100644 --- a/ProftaakRH/FietsDemo.cs +++ b/ProftaakRH/FietsDemo.cs @@ -11,15 +11,14 @@ namespace FietsDemo { internal class Program { - static void Main(string[] args) - { - foo foo = new foo(); - //BLEReceiver bLEReceiver = new BLEReceiver(foo); + //static void Main(string[] args) + //{ + // foo foo = new foo(); + // BLEReceiver bLEReceiver = new BLEReceiver(foo); - - //bLEReceiver.ConnectToBLE(); - Console.Read(); - } + // bLEReceiver.ConnectToBLE(); + // Console.Read(); + //} interface IFoo { @@ -144,7 +143,7 @@ namespace FietsDemo { Console.WriteLine("Foo class received {0}", Convert.ToString(bytes)); - + } } diff --git a/ProftaakRH/Main.cs b/ProftaakRH/Main.cs index 207d831..efad10b 100644 --- a/ProftaakRH/Main.cs +++ b/ProftaakRH/Main.cs @@ -1,10 +1,21 @@ using System; using System.Collections.Generic; using System.Text; +using Hardware; namespace ProftaakRH { - class Main + class Program { + + static void Main(string[] args) + { + IDataConverter dataConverter = new DataConverter(); + BLEReciever bLEReceiver = new BLEReciever(dataConverter); + + bLEReceiver.Connect("sdkgjnzsoifgnzaiof"); + + //Console.ReadLine(); + } } } From 87abee1207c1c0bd079c9cacc9456d403cab2a74 Mon Sep 17 00:00:00 2001 From: shinichi Date: Wed, 9 Sep 2020 13:43:59 +0200 Subject: [PATCH 2/3] error handling --- ProftaakRH/BLEReciever.cs | 62 ++++++++++++++++++++++++++++----------- ProftaakRH/Main.cs | 4 +-- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/ProftaakRH/BLEReciever.cs b/ProftaakRH/BLEReciever.cs index d0d4d0f..854d80f 100644 --- a/ProftaakRH/BLEReciever.cs +++ b/ProftaakRH/BLEReciever.cs @@ -10,17 +10,17 @@ namespace Hardware class BLEReciever { IDataConverter dataConverter; + BLE bleBike; + BLE bleHeart; public BLEReciever(IDataConverter dataConverter) { this.dataConverter = dataConverter; } - public async void Connect() + public void Connect() { - int errorCode = 0; BLE bleBike = new BLE(); - BLE bleHeart = new BLE(); Thread.Sleep(1000); // We need some time to list available devices // List available devices @@ -31,50 +31,78 @@ namespace Hardware Console.WriteLine(name); if (name.Contains("Avans Bike")) { - Connect(name); Console.WriteLine("connecting to {0}", name); + Connect(name); break; + } } } public async void Connect(string deviceName) { int errorCode = 0; - BLE bleBike = new BLE(); - BLE bleHeart = new BLE(); + bleBike = new BLE(); + bleHeart = new BLE(); errorCode = errorCode = await bleBike.OpenDevice(deviceName); - // __TODO__ Error check - - var services = bleBike.GetServices; - foreach (var service in services) + if (errorCode > 0) { - Console.WriteLine($"Service: {service}"); + disposeBLE(); + return; } // Set service errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"); - // __TODO__ error check + if (errorCode > 0) + { + disposeBLE(); + return; + } // Subscribe bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"); + if (errorCode > 0) + { + disposeBLE(); + return; + } // Heart rate errorCode = await bleHeart.OpenDevice(deviceName); + if (errorCode > 0) + { + disposeBLE(); + return; + } - await bleHeart.SetService("HeartRate"); + errorCode = await bleHeart.SetService("HeartRate"); + if (errorCode > 0) + { + disposeBLE(); + return; + } bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; - await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); + errorCode = await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); + if (errorCode > 0) + { + disposeBLE(); + return; + } } private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) { - Console.WriteLine("Received from {0}: {1}, {2}", e.ServiceName, - BitConverter.ToString(e.Data).Replace("-", " "), - Encoding.UTF8.GetString(e.Data)); + Console.WriteLine("Received from {0}: {1}", e.ServiceName, + BitConverter.ToString(e.Data).Replace("-", " ")); //send to dataconverter } + + private void disposeBLE() + { + this.bleBike?.Dispose(); + this.bleHeart?.Dispose(); + } } } diff --git a/ProftaakRH/Main.cs b/ProftaakRH/Main.cs index efad10b..4625f5d 100644 --- a/ProftaakRH/Main.cs +++ b/ProftaakRH/Main.cs @@ -13,9 +13,9 @@ namespace ProftaakRH IDataConverter dataConverter = new DataConverter(); BLEReciever bLEReceiver = new BLEReciever(dataConverter); - bLEReceiver.Connect("sdkgjnzsoifgnzaiof"); + bLEReceiver.Connect(); - //Console.ReadLine(); + Console.ReadLine(); } } } From 8d9985ac89bebc60c03a20f59d6c2172452d22cd Mon Sep 17 00:00:00 2001 From: shinichi Date: Wed, 9 Sep 2020 13:44:50 +0200 Subject: [PATCH 3/3] BLEreceiver running bool --- ProftaakRH/BLEReciever.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ProftaakRH/BLEReciever.cs b/ProftaakRH/BLEReciever.cs index 854d80f..280fc73 100644 --- a/ProftaakRH/BLEReciever.cs +++ b/ProftaakRH/BLEReciever.cs @@ -10,12 +10,14 @@ namespace Hardware class BLEReciever { IDataConverter dataConverter; - BLE bleBike; - BLE bleHeart; + private BLE bleBike; + private BLE bleHeart; + public bool running { get; } public BLEReciever(IDataConverter dataConverter) { this.dataConverter = dataConverter; + bool running = false; } public void Connect() @@ -34,7 +36,7 @@ namespace Hardware Console.WriteLine("connecting to {0}", name); Connect(name); break; - + } } } @@ -90,6 +92,7 @@ namespace Hardware disposeBLE(); return; } + this.running = true; } private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) @@ -103,6 +106,7 @@ namespace Hardware { this.bleBike?.Dispose(); this.bleHeart?.Dispose(); + this.running = false; } } }