What is Railroad Automation?
Railroad Automation started out in 2002 as a project I gave myself to quickly get up to speed on what was, at the time, Microsoft’s new .NET platform. Combine that with my love for DCC (Digital Command Control) model railroads and the application grew to become a full featured toy box for model railroads based on Digitrax’s Loconet network. Over the years as the .NET feature set evolved, I have been able to add many cool features to the application both as a learning tool and because it made the application that much more fun to operate.

I found that other model railroad DCC solutions available suffered from one or more of these problems which I wished to improve upon: un-user friendly, antiquated, and sometimes downright ugly UIs, closed and not componentized, stiff and un-programmable. My goal was to provide prototypical model railroad command and control utilizing modern technologies and providing a great deal of flexibility for third party developers or tinkerers. The latter was achieved by breaking the application into distinct layers so consumers can choose the level of flexibility vs. usability they require.
Components
Element File Namespace Description
Loconet API RRAutoLib.dll RRAutoLib.Loconet This .NET library provides basic packet communication to/from Loconet. (COM Callable Wrapper included)
Automation API RRAutoLib.dll RRAutoLib.CTC This .NET library is a Loconet API consumer. It is a higher level API and engine for Centralized Train Control.
Railroad Automation Application RRAuto.exe not exposed This is the application that consumes both APIs wrapping them with a user friendly UI. Both APIs are also exposed through the scripting interface from within the application.
API Hierarchy
Features
Included in current version:
  • .NET Loconet API with CCW for COM
  • Real time slot inspector with purging
  • Loconet packet traffic inspector
  • Full featured LocoIO programmer
  • DCC decoder programmer
  • Multiple throttle control
  • Editable switchboard display (GDI+, DirectX, WPF)
  • Tracks, Turnouts, Blocks, Routes, Sensors, Signals, Accessories
  • Event Binding and Scripting
  • Control through in-proc speech recognition (Vista and above only)
For future versions:
  • Multi-track command sequencing
  • Signaling based on routes
  • Lines and Successors
  • Quadratic speed acceleration/deceleration curves
  • Speed tables
  • Virtual positioning
  • Dynamic brake distances
  • Best pathway finding with gridlock prevention
  • Early resource release
  • Automatic throttle operations
Screenshot
Screenshot (Click for larger image)
Downloads and Resources
The binaries can either be installed through a standard Windows installation or a ClickOnce deployment. If you don't wish to develop againt the API, and your system supports it, the ClickOnce deployment is the simpler and prefered choice. Please send bugs or requests to Perecli@dslextreme.com.


Latest Stable Release (4/8/09 - Build v1.1.26):

Launch - ClickOnce application deployment

Download - Standard .MSI application and libraries installer.

View - Railroad Automation class library documentation.

Download - VS2008 WinForms sample project demoing basic usage of the LoconetService class.

Download - VS2008 WinForms sample project demoing basic usage of the CtcService class.

Download - VB6 code example showing basic usage of the LoconetService class through CCW (COM Callable Wrapper).


Alpha Build of Upcoming v2.0 for WPF:

Launch - ClickOnce application deployment of work in progress

View - Railroad Automation class library documentation with WPF support.


Other References:

Download - Free copy of Visual Studio 2008 Express.

Loconet Checker - Application built on top of this Loconet API for management, configuration, and monitoring your Digitrax devices. This is a great utility, written by Stefan Trachsler.