A Cross-Platform FabInterpreter
Over the summer, I worked on getting the current software to run on Mac OS X and Linux. The original version of the interpreter relied on DLL files to load in the functions, and in these libraries the communication to the serial port was exclusively Windows based. The goal of this project was to have the FabInterpreter working on all three operating systems: Windows, Mac OS X, and Linux.
By the end of the summer, the FabInterpreter was working cross platform! To get around the problems of loading in the DLL files, I got rid of using dynamic libraries and instead used the source code of the functions directly. These functions then had to be rewritten to be compatible for Mac and Linux. Luckily, Jeff and I found code developed in Qt that was designed to communicate to a serial port for any Windows or Posix operating system, which includes Unix-based systems such as Mac OS X and Linux. I modified the functions so that they would read from the port using this new code base. Once that part was working, I modified the original code from the FabInterpreter so that it would compile in Qt. The combination of the interface of the previous FabInterpreter with the newly designed base to control the motors allowed the Fab@Home to print on Mac OS X and Linux.
The FabInterpreter is now available for download from fabathome.org/installers for any Windows, Mac, or Linux operating system.