I just finished watching all the videos for the C# for Crestron – Crestron Drivers online course and feel like I absorbed very little of it. The driver abstraction seems overly complicated, and the overall presentation of their videos is very dull. I like to contrast them with Q-SYS videos which are short and focused enough to hold your attention. Something about Crestron’s videos feels too robotic and I find myself multitasking with them on in the background.
But anyway, back to Crestron’s driver model. I haven’t looked at it much, but I’ve seen several updates pushed out to the database recently, so figured I should invest some time with them. There’s a developer microsite that contains everything you need to know about working with drivers. You’ll also find links there to download the latest Driver SDK.
I think first I’d like to see if these drivers can control the Sharp Aquos LC-40LE653U display I have setup in my office. This model doesn’t have a serial port on it, so it’s not ideal for integration (but it was the right size and available for me to borrow indefinitely). So I’m going to search the drivers list to see if one exists. I couldn’t find an exact match, but they do have an IP driver for the LC-40LE835U, so I’ll give that one a shot.
Crestron documentation seems to be missing a very basic tutorial about how to use one of these drivers. It would be nice to see examples for AV Framework, Crestron Home, SIMPL Windows, and SIMPL# Pro. If you dig into the SDK package, there are example programs hiding in \SDK\TestTools\Program Files\.
Lets start with an empty program (since the examples have included the kitchen sink apparently). I’m going to drag in a Crestron Certified Drivers Display Ethernet v2.0 (cm) module into my program and assign some signals that I can play with in debugger:
Using File Manager in Toolbox, I copy the FlatPanelDisplay_Sharp_LC-52LE640U_IP.pkg file to the \User folder on my PRO3. Then when I start the program, I can simulate loading the driver. It takes a few seconds to load completely:
But I can’t seem to get the driver to actually control the display. It says it connects, but none of the controls seem to have any effect.
Let me make sure I can even control this display without worrying about the driver aspect. Here’s a stupid simple program that took 2 minutes to write:
And it works!
So it could be the driver I picked is sending slightly different strings (Sharp protocol uses a couple different variations). I could pick a different driver and try again? Let me see if there’s another one listed that might work better.
This time I tried FlatPanelDisplay_Sharp_LC-60LE661U_IP.pkg and it works!
It definitely took me longer to figure out which driver to use than it did to just google how to control Sharp displays over TCP/IP. I do like the added benefit of if the display were swapped out in the future (very likely in my office lab), I just need to find the new module and drop it onto the PRO3. But then I’d need to update the program with the name of the new driver anyway (so still requires a recompile). I could switch to using a configuration file to load the name of the driver in, but then I need to provide a way to update that, too.