1
0
mirror of https://github.com/DarthAffe/OBD.NET.git synced 2025-12-12 16:58:30 +00:00

82 lines
2.5 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using OBD.NET.Communication;
using OBD.NET.Devices;
using OBD.NET.Extensions;
using OBD.NET.Logging;
using OBD.NET.OBDData;
namespace ConsoleClient;
public class Program
{
public static void Main(string[] args)
{
//if (args.Length < 1)
//{
// Console.WriteLine("Parameter ComPort needed.");
// IEnumerable<string> availablePorts = SerialConnection.GetAvailablePorts();
// Console.WriteLine("\nAvailable ports:");
// foreach (string port in availablePorts)
// Console.WriteLine(port);
// return;
//}
string comPort = args[0];
using SerialConnection connection = new(comPort);
using ELM327 dev = new(connection, new OBDConsoleLogger(OBDLogLevel.Debug));
dev.SubscribeDataReceived<EngineRPM>((_, data) => Console.WriteLine("EngineRPM: " + data.Data.Rpm));
dev.SubscribeDataReceived<VehicleSpeed>((_, data) => Console.WriteLine("VehicleSpeed: " + data.Data));
dev.SubscribeDataReceived<IOBDData>((_, data) => Console.WriteLine($"PID {data.Data.PID.ToHexString()}: {data.Data}"));
dev.Initialize();
dev.RequestData<FuelType>();
for (int i = 0; i < 5; i++)
{
dev.RequestData<EngineRPM>();
dev.RequestData<VehicleSpeed>();
Thread.Sleep(1000);
}
Console.ReadLine();
//Async example
// MainAsync(comPort).Wait();
//Console.ReadLine();
}
/// <summary>
/// Async example using new RequestDataAsync
/// </summary>
/// <param name="comPort">The COM port.</param>
/// <returns></returns>
public static async Task MainAsync(string comPort)
{
using SerialConnection connection = new(comPort);
using ELM327 dev = new(connection, new OBDConsoleLogger(OBDLogLevel.Debug));
await dev.InitializeAsync();
EngineRPM? engineRpm = await dev.RequestDataAsync<EngineRPM>();
Console.WriteLine("Data: " + (engineRpm?.Rpm.ToString() ?? "-"));
engineRpm = await dev.RequestDataAsync<EngineRPM>();
Console.WriteLine("Data: " + (engineRpm?.Rpm.ToString() ?? "-"));
VehicleSpeed? vehicleSpeed = await dev.RequestDataAsync<VehicleSpeed>();
Console.WriteLine("Data: " + (vehicleSpeed?.Speed.ToString() ?? "-"));
engineRpm = await dev.RequestDataAsync<EngineRPM>();
Console.WriteLine("Data: " + (engineRpm?.Rpm.ToString() ?? "-"));
}
}