Channels ▼

Mark Nelson

Dr. Dobb's Bloggers

Any Serial Port

November 07, 2010

I spent a pretty big chunk of the 80's and 90's toiling away on Greenl af 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!

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.