GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - DarthAffe/OBD.NET: C#-Library to read data from car through an ELM327-/STN1170-Adapter

BranchesTags
Open more actions menu

Latest commit

 

History

82 Commits
82 Commits

Folders and files

NameName
Last commit message
Last commit date
OBD.NET
OBD.NET
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 

Repository files navigation

OBD.NET

C#-Library to read/write data from/to a car through an ELM327-/STN1170-Adapter

Projects

  • OBD.NET - OBD-II implementation in .NET 6/5 and .NET Framework 4.8
  • ConsoleClient - Example client application using SerialConnection, running with .NET 6

Usage

  • Add the OBD.NET package to project
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 SerialConnection(comPort);
        using ELM327 dev = new ELM327(connection, new OBDConsoleLogger(OBDLogLevel.Debug));

        dev.SubscribeDataReceived<EngineRPM>((sender, data) => Console.WriteLine("EngineRPM: " + data.Data.Rpm));
        dev.SubscribeDataReceived<VehicleSpeed>((sender, data) => Console.WriteLine("VehicleSpeed: " + data.Data));

        dev.SubscribeDataReceived<IOBDData>((sender, 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 SerialConnection(comPort);
        using ELM327 dev = new ELM327(connection, new OBDConsoleLogger(OBDLogLevel.Debug));

        dev.Initialize();

        EngineRPM engineRpm = await dev.RequestDataAsync<EngineRPM>();
        Console.WriteLine("Data: " + engineRpm.Rpm);

        engineRpm = await dev.RequestDataAsync<EngineRPM>();
        Console.WriteLine("Data: " + engineRpm.Rpm);

        VehicleSpeed vehicleSpeed = await dev.RequestDataAsync<VehicleSpeed>();
        Console.WriteLine("Data: " + vehicleSpeed.Speed);

        engineRpm = await dev.RequestDataAsync<EngineRPM>();
        Console.WriteLine("Data: " + engineRpm.Rpm);
    }
}

About

C#-Library to read data from car through an ELM327-/STN1170-Adapter

Topics

elm327obdstn1170

Resources

Readme
GPL-2.0 license
Activity

Stars

229 stars

Watchers

27 watching

Forks

87 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.