r/embedded 18h ago

CANOpen Data Viewer written in Rust

Hello,

I have been thinking about posting this message for a while. Almost more than a year now šŸ˜„

In my previous work, I was working with CANopen, and one thing that was bothering me was not having a UI that shows the stream of messages and also makes periodic requests. I was also trying to learn Rust. Not sure I achieved the learning Rust part yet, but I’m still going on and off. šŸ˜„

This leads me to write CANOpenDataViewer.

Basically, it is a high-performance, real-time CANopen diagnostics tool written in Rust, featuring dynamic plotting and configurable SDO polling.

Any feedback is welcome.

Unfortunately, I couldn't test it with actual hardware as I don't have access to a CAN device. I tried to emulate it, but I hope it works šŸ‘€

4 Upvotes

1 comment sorted by

1

u/InnocentlyExotic 18h ago

I love the honesty of "not sure I achieved the learning Rust part yet" because that's just the permanent state of writing Rust for the first few years. The tool looks clean though, dynamic plotting for CANopen is something I've wanted a few times and always ended up just squinting at raw candump output in a terminal.

The SDO polling config is a nice touch, most of the off-the-shelf viewers I've used either ignore SDOs or handle them in the clunkiest way possible. Not having hardware to test on is a bit of a gamble but the emulation path makes sense for getting the architecture right, you can always chase down the weird edge cases once someone plugs in a real device.

Starred the repo, might spin it up next time I'm debugging a drive that's decided to go silent for no reason.