If the code said shutdownState++, that would need to be protected with a critsec/mutex, because that compiles down into multiple assembly instructions. signal/slot), but that is ok, since it is an integer. This sets shutdownState = true, and is a direct call from one thread into another with no protection (vs.
Example in GrblHoming code would be Gcode::setShutdown(). an integer - CPUs do the set in one instruction, so the set does not need to be protected. It is possible I didn't catch all conditions. Now, I'm lazy as far as implementing critical sections/mutexes when I don't have to, and Qt has an architecture that allows you to almost avoid all use of the multithreaded primitives if you use their signal/slot model of inter-thread communication, which was the approach I chose. Regarding multithreaded coding, every dialog in Qt is run in a separated thread, additionally, I've fired off some threads to do various work. I understand that this may not be a multithreaded issue and could be something specific to the pi. I did hammer on the code pretty well on all three platforms, but multithreaded issues can be difficult to reproduce quickly. There is a chance you uncovered such code that, for some reason, isn't manifesting itself on the other platforms. I've seen lockups before in the code and almost 100% of the time it was due to one thread stomping on the data of another due to incorrect/non-existent data protection.
Installing USB COM port drivers on Windows īob - I'm impressed that you got it to run on the raspberry pi, I didn't even think of that as an option! Installers for Grbl Controller on github: įTDI USB COM port drivers (find Mac drivers here): what was my motivation for this two month, any spare minute, undertaking): A list of the latest enhancements can be found in the README file on github. Grbl Controller supports the Mac, Windows and Linux (Ubuntu and Debian).
To use on the Mac you will need to also install the Mac FTDI drivers.
Included in this version is the first native Mac OSX release (64 bit C++ code), plus a special installer that supports the old 32 bit Intel hardware (10.5). I've rewritten the old Grbl Controller from the ground up and released version 3.0.