Crestron programming samples...

[Link to the file list]

I've been doing Crestron programming for a while now, though not in high volume. If you're interested in seeing some of my work, and if you have the Crestron developer tools, you can download some samples from this page. To protect them from overzealous download filters, virus scanners and badly configured web servers, everything is wrapped in .zip archives.

My first system was a very simple one consisting of an Analog Way scaler and a Mitsubishi projector. The problem was that I needed to turn the projector on and off. Instead of providing a dedicated interface, I connected the scaler to the Crestron CP2E controller and used the scaler's front panel controls as my interface. Selecting any input other than Input 7 would turn the projector on, selecting Input 7 would turn it off. A button panel in the projection booth supplied remote control over the system.

I don't have a copy of this system handy, but one of the things I had to do was to write a serial control module for the Analog Way switcher/scaler, and make that module work with Crestron SystemBuilder. You can download the module here.

That system served reliably for a number of years. Some years later, I developed my first touch panel project for use at the Capital University Law School. There were actually four systems, all based on the QM-RMC controller and the TPMC-4SM touch panel. The sample provided here is actually a very recent revision of a very old program. The original program used page flips to switch between modes for various input devices. The current version uses subpages and is entirely driven by device feedback, making the program more accurate and much easier to maintain.

The Law School classrooms, like the lecture hall driven by the first program, were built around an Analog Way scaler, and so re-used the ANAWEC2 module. Analog Way has discontinued the ESC-341 switcher/scaler, so later classrooms at the Law School were built around the Extron IN1508 switcher/scaler. Again, no pre-built module was available, so I modified my Analog Way module to match the serial protocol of the Extron switcher. So all of the control-equipped classrooms at the Law School use the same simplified, single-page, modeless interface, regardless of whether they use the Analog Way or the Extron switcher. If you'd like to see what my Extron module looks like, you can download it here.

My most recent project was originally going to be a port of the Law School control systems, based on the Analog Way switchers already in place. Late in the planning process, though, the decision was made to use Crestron's DigitalMedia system. The budget did not allow for the use of the Crestron DMPS-300-C, so instead I designed the system around the QM-RMC controller, DM-TX-201-C transmitter, DM-RMC-100-C receiver, and a few other components to give me the features I needed. Naturally, neither the Kramer VS41H HDMI switch nor the Atlona AT-PA100 amplifier had modules available, so again I wrote my own. The Atlona amplifier was a particular challenge because the response strings it sends are not in a consistent format, so it can't be parsed with SIMPL. This led me to write a parser for it which was my first exposure to SIMPL+. It turns out that the Atlona amplifier also does not quite send the response strings exactly as described in the manufacturer's manual, so this module is still subject to a bit of tweaking.

As if the need to write two custom hardware modules wasn't enough, the new Blackmore Library system had to be built in SystemBuilder in such a way that no special handling is required to compile the files, because on the day I began building the system, I learned that I very likely would not be installing or maintaining it. Still, I decided that I wanted to have a simplified method for displaying error and diagnostic messages. In SystemBuilder, I defined the strings as serial constants, and built the conditional statements to invoke each of the error strings. But I couldn't come up with a way to get SystemBuilder to supply that variable string to the error display subpage in the project. My solution was to build a very simple SIMPL logic module that would pass the variable text value to a serial join that I could then attach to the error display subpage. In the end, because of time constraints, I was not able to include all of the features I wanted. Most obviously, I had figured out a method for allowing the control system to receive commands and send responses to a network session, so that I could make the control system scriptable. Perhaps I'll get a chance to provide that function later. Meanwhile, the completed control system can be found here.

Downloadable files:

ANAWEC2.umc Custom module for Analog Way ESC-341 switcher/scaler.
Extron IN1508.umc Custom module for Extron IN-1508 switcher/scaler.
Law 206 Final SystemBuilder package for one of nine Law School classrooms
Kramer VS41H.umc Custom module for Kramer VS-41H 4x1 HDMI switcher.
Atlona Custom module, including SIMPL+ parser, for Atlona AT-PA100 amplifier
SerialPassThrough.umc Logic module to convert a SystemBuilder string to a serial join.
Blackmore 206 SystemBuilder package for a DM-8+ based classroom

--Dave Althoff, Jr.

Back to