I switched to an extender, so no longer have PC to put my LCD in. I have made the source code available if anyone would like to continue the project. It is written in VB.NET; I have included a Visual Studio 2010 Project file, but the code itself it probably back-compatible to .NET 2.0 or so. A VB.NET to C# converter would probably have no trouble converting it to C# if you're more comfortable with that language.
With that said, it continues to work for many people, so feel free to give it a shot as-is.
MizookLcd is a plugin for LCDSmartie which allows you to display data from SageTV on an LCD.
Like all LCDSmartie plugins, plugin commands for MizookLcd look something like this: $dll(MizookLcd.dll, command, param1, param2)
This function is designed to return to me what the most important thing is that SageTV is currently doing. I use it to determine which LCDSmartie screen to display. If I'm watching something,
I have my LCD display the name of the show I'm watching and a progress bar of how far through it I am. If I'm not watching something, but it is recording, I have it display what it is recording.
If it isn't doing either, I have the LCD show the date and time.
The function works like this (depending on format):
I use this function to continuously trigger an action in order to keep a screen locked on. So far I have only used it in conjuction with function 8 like so:
$dll(MizookLcd.dll, 9, $dll(MizookLcd.dll, 8, ,),-1)
For the above example, if SageTV was playing something it would alternate between 0 and -1. If it wasn't doing anything, it would stay -1. If it was recording on Tuner #1 it would alternate between 1 and -1. I then have two actions setup in LCDSmartie using that expression. The first says if the expression = 0 Then GoToScreen(4) the 2nd says if the expression > 0 Then GoToScreen(5). Screen 4 is my Now Playing screen. Screen 5 is my Now Recording Screen.
This is the only screen that I leave "Enabled". It is what LCDSmartie shows when SageTV isn't doing anything.
Any time I'm watching a show or listening to music in SageTV, this is the screen that is shown on the LCD. It shows what Show is being played and displays a progress bar.
This screen is shown whenever one of my 2 tuners is recording something - but only if I'm not watching something.
It is the 'actions' that cause LCDSmartie to actually switch to the appropriate screen. This is accomplished through a combination of function8 of MizookLcd (Get Most Important Function) and function9 of MizookLcd (Constantly Trigger Action). The reason function9 is required is that an action only fires when its condition becomes true. Then it stops firing. So if we just put "Go to Screen 4 when function8 = 1" it would go to Screen 4 when SageTV First started playing something, but then after the screen had display for however long it is set for (usualy 4 seconds or so) it would then return to the standard enabled screen (Date and Time). function9 outputs an alternating value. Since we feed it the output of function8 and -1, it alternates between those two values. So if SageTV is playing something, it'll constantly alternate between 0 and -1 causing the action to be triggered over and over again. This causes LCDSmartie to effectively "lock on" to screen 4 until SageTV stops playing something.