Somewhat TL;DR
This is a Maker related Software project (at least the bit I’m discussing here is);
Years ago I made the PrintEye
, which is a simple display device for RRF based printers (Duet3D and FlyRRF based controllers, plus others).
Although not much discussed here RRF has a strong following thanks to it’s use in the Duet range in industry, and is a very complex system these days with a thriving ‘Software Framework’ used to extend it. At the heart of this is the 'ObjectModel` which can represent all the individual devices that make up a ‘controller’ in a single data structure. This in turn can be accessed as JSON via any stream interface to the controller.
RRF 3.5 (currently in late beta) is a major release with some depreciations; one of which hits the mechanism my original PrintEye uses to get machine data. This change is basically forcing me to use the ObjectModel for PrintPy2040
, a micropython based replacement.
I got a bit carried away in building my CPython based prototype (run on a PI3 plugged into my Duet2/wifi) and ended up making a complete serial ObjectModel synchronisation class that runs on both Cpython3 and microPython1. It provides a dictionary that mirrors (user selected) parts of the ObjectModel and can be refreshed as needed.
There is an associated logging loop that implements a robust loop to gather print/cnc/laser data and progress. The output of this is, in turn, is handled by a separate class so that it is easy to implement console/I2C/SPI/Whatever displays.
And a working microPython port running on the XIAO 2040 based printPy2040 that has NeoPixel mood lighting, but no display features yet.
I’m basically posting this here since I need to get it out of my system. Well over a month of work has gone into this so far and I need some air. Once I’ve mowed the grass etc I need to return to the ‘nice user display’ part of the project.
Which is another story; since you would have thought that microPython1+, with it’s internal framebuffer, would have some nice small display/mono font packs available… but it does not. No U8G2 equivalent.
My current project is aimed filling this hole; it’s half done. I have fonts, but need a better way of displaying them.