Our new official repo is on github
LCD Smartie version 5.6 is released!
Download it now: https://github.com/LCD-Smartie/LCDSmartie/releases

LCDSmartie control

Discussing issues that occur during plugin development.

Moderators: _X7JAY7X_, caesar, IFR, mattcro, limbo

Post Reply
AllenConquest
Posts: 32
Joined: February 26th, 2005, 7:03 pm

LCDSmartie control

Post by AllenConquest »

I'm just starting work on developing a plugin and was just wondering if someone could point me in the direction of some documentation (if it exists) on how to write a plugin.

I was just wondering if there is a way for an application to trigger an event on the VFD. I know that LCDSmartie can poll a DLL every 300ms, but is it possible that when an application is started it comes up on the VFD with a message to show this ? How can that be done ?

Thanks,

Allen
AllenConquest
Posts: 32
Joined: February 26th, 2005, 7:03 pm

Post by AllenConquest »

Can this sort of functionality be added for a future release? It would be great if a plugin could control a few things (a bit like jaLCD). People are telling me to stick with LCDSmartie because the CPU overhead is less, so I would love to see this added.
hamiltonjct
Posts: 1
Joined: February 15th, 2005, 10:36 pm
Location: Nashville, TN
Contact:

Post by hamiltonjct »

Here's a sample of the code I use to check the status of a process. You will need to know the name of the process node as it would appear in Task Manager.

'-------------------------------------------------------------------
Public Class LCDSmartie

Public Function function2(ByVal param1 As String, ByVal param2 As String) As String
Dim p As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
Dim result
Dim i
Dim newNode
result = 0
For i = 0 To p.GetUpperBound(0)
' Debug.WriteLine(p(i).ProcessName.ToString)
newNode = p(i).ProcessName
'
'
' Change Amp below to the process you are looking for.
If newNode = "Amp" Then
result = 1
End If
Next
Return result
End Function

Public Function GetMinRefreshInterval() As Integer
Return 300 ' 300 ms (around 3 times a second)
End Function
End Class
'-------------------------------------------------------------------

Then if the Smartie config create an action
$dll(dllname,2,,) = 0 GotoTheme(1)
$dll(dllname,2,,) = 1 GotoTheme(2)

You can replace the GotoTheme with one of the ouput options available.

Hope that helps
cinOxen
Posts: 4
Joined: November 28th, 2005, 6:18 am

Post by cinOxen »

My first post here (been lurking for awhile) :)

This looks fairly simple. What are the chances of a plugin that simply confirms the existence of a process? I would try myself to implement the above code but really don't know where to start.

I love LCD smartie but really wish this functionality existed. I primarily use winamp and zoom player on this machine. Unfortunately I can't get the zoom player plugin working but I would be happy to have the ability of making a generic movie screen - i just need to know when zoom player is running.
Workshed
Posts: 26
Joined: November 10th, 2005, 11:07 pm

Post by Workshed »

I've added some code to LCD Smartie to check for a couple of processes, if you tell me the String the process shows up with I could add it in as an option in the "Skip this screen if..." dropdown box.
cinOxen
Posts: 4
Joined: November 28th, 2005, 6:18 am

Post by cinOxen »

Wow, Thanks Workshed!

The process I'm interested in is zplayer.exe

But some other useful ones for people might be:
wmplayer.exe
TheaterTek DVD.exe
foobar2000.exe

For HTPCs anyway :)

cheers

[edit]
IMO the best overall functionality of LCD Smartie would be a function like the one above that could accept different strings and be called, for example, like $dll(process_exists,1,"example.exe",0) and then it could be used in conjunction with actions and themes.

I normally don't make suggestions to developers but this program really rocks - definitely the best one out there :)
Jumpin' Jon
Plugin Author
Posts: 35
Joined: August 3rd, 2005, 12:34 am
Contact:

Post by Jumpin' Jon »

I you're planning to add this functionality, could you consider making it configurable? i.e. you can "Skip this screen if X is/is not running" based on something more than just a set list. Perhaps INI file settings to define a list (much like that shown above), or better still some way for the user to enter their own string in the UI.

Better still, allow plug-in interaction like that available in Actions. i.e. "Skip this screen if X > Y". That would allow cool things like, making a series of screens to show news stories, and have only the appropriate number appear; News screen #2 would show if.. "dll(news, numstories) > 1".

I think this kind of interaction is what makes Smartie so popular. I'm working on a set of Themes / Screens that show information relevant to what I'm currently doing, and it's exactly this kind of thing that is making it hard atm. A theme for Gaming, for example, focuses more on the Temps and CPU performance, and doesn't bother with News and Weather... In this example, a "if DirectX is active" would be a handy thing to know and be able to handle.

Just my 2p.

JJ
Workshed
Posts: 26
Joined: November 10th, 2005, 11:07 pm

Post by Workshed »

Some cracking ideas! Will try and get those processes in as a starter and then add a GUI configurable version :) (when i get chance!)
jonny
Posts: 48
Joined: December 18th, 2005, 5:50 am

Post by jonny »

I would LOVE to have this function. It is literally the _only_ thing missing from this stellar program. I wish I knew how to program so I can help, but please let me know when this is added!
AllenConquest
Posts: 32
Joined: February 26th, 2005, 7:03 pm

Post by AllenConquest »

Can you add mediaportal.exe to your list of executables that can be detected ?

Cheers,

Allen
jonny
Posts: 48
Joined: December 18th, 2005, 5:50 am

Post by jonny »

i got the zoom player plugin to trigger an action by using the status of the player = playing or stopped or paused, etc. The action can make smartie go to a new theme:

when the status = playing, then goto theme(x) where theme x contains the zoom player screen.

when status = closed, goto theme(n) where theme n is the base set of screens.

That way, the zoom player screen only comes up when it is playing.

IMPORTANT: the case of the status (Playing, Paused, etc) must the same as what the plugin returns.

I am sure this method would work with any other plugin.
cinOxen
Posts: 4
Joined: November 28th, 2005, 6:18 am

Post by cinOxen »

jonny,

after seeing your post I decided to try the zoomplayer plugin again and this time it worked :)

A window popped up from zoomplayer asking if I wanted to enable program access. I never saw this window last time on an older version so maybe it had to be manually enabled before.

Anyhow the idea of a plugin that simply determines the existence of a running process is still a great idea - even if I don't need it anymore ;)
Post Reply