I spent a pretty big chunk of the 80’s and 90’s toiling away on Greenleaf Commlib, a C/C++ library that provided support for RS-232 communications on MS-DOS and Windows machines. Despite the fact that serial communications ports were standard issue on IBM-compatible PCs, Microsoft provide little or no support for their use under MS-DOS or 16-bit versions of Windows. Which allowed Greenleaf to carve out a healthy little business, taking me along with them.
Even with our library, working with RS-232 ports could be pretty tough. C/C++ programmers in this environment didn’t have good options for writing code that dealt with asynchronous events, so programs tended to be difficult to both develop and maintain. We tried a lot of approaches to improving the situation, but one thing we never pursued was the idea of developing a Domain-specific Language.
In retrospect, I think we might have missed a real opportunity here. A couple of weeks ago I received an email from Orhan Alby, announcing the launch of Any Serial Port, a language specifically devoted to developing RS-232 applications. Having a language dedicated to RS-232 programming is a big plus, but Alby took it one step further by providing an IDE that really makes it easy to debug the entire process.
The language is nicely crafted for this kind of work - at the high level it takes the approach of developing a state machine, which is driven by RS-232 events. It’s a very natural paradigm for communications work.
Fortunately, the entire project is available on SourceForge under GPLv3. Next time you have a need to dust off your RS-232 knowledge, I encourage you to give a try to Any Serial Port and see if it cuts your development time down. And if you like it, dig in and help improve it!