CanKit: a unified c# API for CAN bus (looking for testers & feedback)

Why I’m building this

When you jump between different CAN adapters, each SDK has its own model, types, and quirks. I wanted a single, clean API that lets you open a bus, send/receive frames, set filters, and do periodic TX—without rewriting …


This content originally appeared on DEV Community and was authored by Pkuyo

Why I’m building this

When you jump between different CAN adapters, each SDK has its own model, types, and quirks. I wanted a single, clean API that lets you open a bus, send/receive frames, set filters, and do periodic TX—without rewriting everything for each vendor. That became CanKit.

What works today

  • One API surface for classic CAN 2.0 and CAN-FD
  • Open by endpoint strings or typed helpers; enumerate endpoints
  • Sync/async I/O, basic events (frame received, errors), filtering (mask/range), and periodic transmit
  • Adapters: PCAN-Basic (Peak), Kvaser CANlib, SocketCAN (Linux), ZLG
  • Targets: .NET Standard 2.0 and .NET 8

Note: Some behaviors vary by adapter (timeouts, hardware filters, error frames, periodic TX). The docs call out some differences and fallbacks.

Quick start

using CanKit.Core;
using CanKit.Core.Definitions;

// Open a bus (example: SocketCAN) and set classic bit timing
using var bus = CanKit.Core.CanBus.Open(
    "socketcan://can0#netlink",
    cfg => cfg.TimingClassic(500_000));

// Send a classic CAN frame
var frame = new CanClassicFrame(0x123, new byte[] { 0x11, 0x22, 0x33 });
bus.Transmit(new[] { frame });

If you prefer strongly-typed helpers, some adapters have them (e.g., Kvaser).

Roadmap / Where I need help

  • Broader device coverage & validation across OSes
  • Sharper adapter-specific docs and samples
  • Edge cases around timeouts/filters on certain devices

I’m actively improving things; bug reports, device notes, and PRs are super welcome.

How you can help

  • Try it with your adapter(s) and share logs or findings
  • Open issues for missing features, confusing docs, or rough edges
  • Send PRs—even small ones (typos, samples) help a lot
  • Suggest real-world use cases I should cover in samples

Links


This content originally appeared on DEV Community and was authored by Pkuyo


Print Share Comment Cite Upload Translate Updates
APA

Pkuyo | Sciencx (2025-10-13T03:13:18+00:00) CanKit: a unified c# API for CAN bus (looking for testers & feedback). Retrieved from https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/

MLA
" » CanKit: a unified c# API for CAN bus (looking for testers & feedback)." Pkuyo | Sciencx - Monday October 13, 2025, https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/
HARVARD
Pkuyo | Sciencx Monday October 13, 2025 » CanKit: a unified c# API for CAN bus (looking for testers & feedback)., viewed ,<https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/>
VANCOUVER
Pkuyo | Sciencx - » CanKit: a unified c# API for CAN bus (looking for testers & feedback). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/
CHICAGO
" » CanKit: a unified c# API for CAN bus (looking for testers & feedback)." Pkuyo | Sciencx - Accessed . https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/
IEEE
" » CanKit: a unified c# API for CAN bus (looking for testers & feedback)." Pkuyo | Sciencx [Online]. Available: https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/. [Accessed: ]
rf:citation
» CanKit: a unified c# API for CAN bus (looking for testers & feedback) | Pkuyo | Sciencx | https://www.scien.cx/2025/10/13/cankit-a-unified-c-api-for-can-bus-looking-for-testers-feedback/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.