Featured Post

Site Navigation is in the Left Column

Sunday, February 9, 2025

Update. A LOT has changed!

It has been a while since I have posted, but I HAVE been working on this project.

First and foremost, I moved to another state.  During that time I had to sell 5 properties, buy a property and get it ready for living.

NEW HOME
A large part of the new property has been remodeled (by me) but still has a ways to go.  I have completely gutted and remodeled the living room, entry way and dining room, including soundproofing the walls, correcting structural defects etc.  

I also remodeled the master bedroom, my office and the master closet.

I relaced the well pump and got the entire system working.

I renovated the 2.5 acre yard.

Cut and split (by hand) several cords of firewood.

I still have a den, a bedroom, and 2 bathrooms to remodel...most of them are complete guts.

NEW SHOP
the new property has a massive, climate-controlled shop, complete with a full bath and an explosion-proof paint booth.

With all of its grandeur, the new shop needs a lot of work.  I am looking at a full gut ad replacing sheathing.  In some areas, the plates are rotted out and studs are compromised.  Additionally, it has a 16' wide bay door with an undersized header that needs beefed up.

DEATHS
I have had 2 deaths in my family and my wife has had 2 deaths in hers.

RESOURCE CONTENTION
The project was originally started on the Raspberry Pi3b.  As the project grew and became more complex, it became clear that eh Pi3b was not up to the challenge.  It had significant issues compiling the code, particularly if I changed too many source files at one time.  I resorted to compiling the application several times in a row hoping it would get multiple object files built before it crashed.  I made it a standard to ONLY change one file at a time, if possible.  This helped, but the compilation could still take 5-10 minutes.  

I was looking at cross-compiling, but 1) it is a challenge all it own and 2) I could not really test the code without the I2C physical interface installed o the cross-compiling machine.

I was diligently trying to get a path using cross-compiling, but the Raspberry Pi5 came out before I could get a suitable strategy.

RASPBERRY PI5
I decided to buy a Pi5 but was disappointed to find out it was on back order for 3-5 months.  So I had to wait, ad wait, and wait.  One I received it, I was disappointed to find out that it came with NOTHING...not even a power supply.

So, I had to find a power supply online.  Guess what, they were all sold out, too.  The Pi5 has a low-power mode, but you really need a high-power power supply to run it at its full potential.  The power supply exceeds the power capabilities of any USB-C power module, so I had to wait.  It arrived about 2 months later.

BTW, the PI5 has dual video ports, but they require a cable that was not very common at the time.  It is basically a micro-HDMI connector.  They were also hard to find at the time.

After 8 months of waiting on the Pi5 to be useable, I started porting everything over.  I ran into other issues.  The IDE I was using would not run on the PI5 so I had to change IDEs.  The libraries I was using were not installed on the PI5 as it had newer versions installed.

I tried porting the application over to the newer versions of the libraries, but it did NOT go well.  I originally developed using GTK2, which was a bolt-on to the PI3b.  Well, that library was not installed on the PI5.  So, I decided to switch over to the latest and greatest GTK4.  Boy was that an adventure!  Apparently, the developers of the library radically change things between major revisions.  GTK4 is NOT and upgrade of GTK2, it is a total redesign, complete with no viable documentation and no viable upgrade path.

After many long hours of trying, I bastardized my PI5 by hand-installing a GTK3 version on it.  I was able to go to GTK3 (with some significant redesign.)  at this point, GTK4 is not an option.  I will never use GTK for a project again.  It was a HUGE mistake!

One of the major changes in GTK3 is in the way it handles DrawingAreas.  Someone thought it would be a good idea to require the entire drawing area to be redrawn every time you wanted a change to be made.  They made it impossible to write a custom function to write to the drawing area without doing it through an event handler.  As a result, you can no longer just draw a line on a drawing area.  You have to stage the data to draw the line, then trigger a drawing area redraw.  This triggers the on_draw handler which you then use to call another custom function that reads the draw data and draws it.  Basically, it's a hokey work around to get around the fact they do not allow you to write to a drawing area dynamically, anymore.

WIRING PI
In addition to the above, the author of the WiringPI library has stopped developing it and has killed it from his web page.  The PI5 has it installed, but it is not supported in any way.  So I decided to write my own library.

Fortunately, I abstracted WiringPi functions in my original design, so it was fairly simple to inject my library into the project.

FINALLY
As of today, the Freeze Dryer code is back up and operational running on the PI5.  

MORE ISSUES
When we moved, I had to leave behind my project refrigerator.  I have to find an old refrigerator I can cannibalize for parts.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.