Close

November 23, 2015

A project log for AquaPic - Aquarium Controller

Reef tank controller used to monitor various parameters such as temp and pH, and also control equipment such as pump and lights.

skyler-brandtSkyler Brandt 11/25/2015 at 21:590 Comments

This is going to be a short post, but I need to rant. In my opinion, Mono is really well implemented. They do a good job throw not implemented exceptions when the code isn't implemented under it's framework. However, they completely missed the fact that mark/space parity is not implemented in MonoPosixHelper.dll. My RS485 communication doesn't work on the Raspberry Pi but does under Windows. Luckily I started down the right path, think that 9th address bit, aka parity, was my issue. I had to dig all the way down into the C code to find this gem:

case Mark: /* Mark */
    /* XXX unhandled */
    break;
case Space: /* Space */
    /* XXX unhandled */
    break;
I don't care that these aren't implemented. I would not be surprised if I'm one of the first, if not the first person, to run into this issue. I'm just wish that would have thrown an error telling me, "Hey, mark and space aren't implemented, do something else". Now the question is, do I change that in C code and recompile Mono, or just hack around it with setting Odd/Even every single sent byte.

Discussions