basic class layout

This commit is contained in:
shinichi
2020-09-09 11:30:02 +02:00
parent 2200e2f012
commit 213a098356
4 changed files with 143 additions and 75 deletions

10
ProftaakRH/BLEReciever.cs Normal file
View File

@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ProftaakRH
{
class Class1
{
}
}

View File

@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ProftaakRH
{
class Class1
{
}
}

View File

@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ProftaakRH
{
class DataConverter
{
}
}

View File

@@ -9,103 +9,141 @@ namespace FietsDemo
{ {
internal class Program internal class Program
{ {
private static async Task Main(string[] args) static void Main(string[] args)
{ {
int errorCode = 0; foo foo = new foo();
BLE bleBike = new BLE(); BLEReceiver bLEReceiver = new BLEReceiver(foo);
BLE bleHeart = new BLE(); bLEReceiver.ConnectToBLE();
Thread.Sleep(1000); // We need some time to list available devices
// List available devices
List<String> bleBikeList = bleBike.ListDevices();
Console.WriteLine("Devices found: ");
foreach (var name in bleBikeList)
{
Console.WriteLine($"Device: {name}");
}
// Connecting
errorCode = errorCode = await bleBike.OpenDevice("Avans Bike AC48");
// __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("Avans Bike AC48");
await bleHeart.SetService("HeartRate");
bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged;
await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement");
Console.Read(); Console.Read();
} }
private static void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) interface IFoo
{ {
Console.WriteLine("Received from {0}: {1}, {2}", e.ServiceName, void doStuff(byte[] bytes);
BitConverter.ToString(e.Data).Replace("-", " "), }
Encoding.UTF8.GetString(e.Data));
string[] bytes = BitConverter.ToString(e.Data).Split('-'); class BLEReceiver
string[] ANT = new string[5]; {
if (e.ServiceName == "6e40fec2-b5a3-f393-e0a9-e50e24dcca9e") IFoo foo;
public BLEReceiver(IFoo foo)
{ {
Console.WriteLine("SYNC : " + bytes[0]); this.foo = foo;
ANT[0] = bytes[0]; }
Console.WriteLine("LENGTH : " + bytes[1]);
int length = Convert.ToInt32(bytes[1], 16); public async void ConnectToBLE()
ANT[1] = length.ToString(); {
Console.WriteLine("MSG ID : " + bytes[2]); int errorCode = 0;
ANT[2] = bytes[2]; BLE bleBike = new BLE();
string msg = string.Empty; BLE bleHeart = new BLE();
for (int i = 3; i < 3 + length; i++) Thread.Sleep(1000); // We need some time to list available devices
// List available devices
List<String> bleBikeList = bleBike.ListDevices();
Console.WriteLine("Devices found: ");
foreach (var name in bleBikeList)
{ {
msg += bytes[i]; Console.WriteLine($"Device: {name}");
} }
ANT[3] = msg;
byte[] message = new byte[length]; // Connecting
errorCode = errorCode = await bleBike.OpenDevice("Avans Bike AC48");
// __TODO__ Error check
Array.Copy(e.Data, 3, message, 0, length); var services = bleBike.GetServices;
foreach (var service in services)
{
Console.WriteLine($"Service: {service}");
}
DoCrazyShitWithMsg(message); // Set service
errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e");
// __TODO__ error check
Console.WriteLine("MSG : " + msg); // Subscribe
string checksum = bytes[3 + length]; bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged;
ANT[4] = checksum; errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e");
Console.WriteLine("CHECKSUM : " + checksum);
// Heart rate
errorCode = await bleHeart.OpenDevice("Avans Bike AC48");
Console.WriteLine(BitConverter.ToString(e.Data)); await bleHeart.SetService("HeartRate");
} else bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged;
{ await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement");
Console.WriteLine("BPM: " + Convert.ToInt32(bytes[1], 16));
Console.Read();
}
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));
//string[] bytes = BitConverter.ToString(e.Data).Split('-');
//string[] ANT = new string[5];
//if (e.ServiceName == "6e40fec2-b5a3-f393-e0a9-e50e24dcca9e")
//{
// Console.WriteLine("SYNC : " + bytes[0]);
// ANT[0] = bytes[0];
// Console.WriteLine("LENGTH : " + bytes[1]);
// int length = Convert.ToInt32(bytes[1], 16);
// ANT[1] = length.ToString();
// Console.WriteLine("MSG ID : " + bytes[2]);
// ANT[2] = bytes[2];
// string msg = string.Empty;
// for (int i = 3; i < 3 + length; i++)
// {
// msg += bytes[i];
// }
// ANT[3] = msg;
// byte[] message = new byte[length];
// Array.Copy(e.Data, 3, message, 0, length);
// DoCrazyShitWithMsg(message);
// Console.WriteLine("MSG : " + msg);
// string checksum = bytes[3 + length];
// ANT[4] = checksum;
// Console.WriteLine("CHECKSUM : " + checksum);
// Console.WriteLine(BitConverter.ToString(e.Data));
//}
//else
//{
// Console.WriteLine("BPM: " + Convert.ToInt32(bytes[1], 16));
//}
//Console.WriteLine();
this.foo.doStuff(e.Data);
}
private static void DoCrazyShitWithMsg(byte[] bytes)
{
String[] hexvalues = BitConverter.ToString(bytes).Split('-');
for (int i = 0; i < hexvalues.Length; i++)
{
Console.WriteLine("Byte {0}: {1}", i, hexvalues[i]);
}
} }
Console.WriteLine();
} }
private static void DoCrazyShitWithMsg(byte[] bytes) class foo : IFoo
{ {
String[] hexvalues = BitConverter.ToString(bytes).Split('-'); public void doStuff(byte[] bytes)
for (int i = 0; i < hexvalues.Length; i++)
{ {
Console.WriteLine("Byte {0}: {1}" , i, hexvalues[i]);
Console.WriteLine("Foo class received {0}", Convert.ToString(bytes));
} }
} }
} }
} }