From XAP Automation
Revision as of 23:02, 2 May 2006 by Jamest (Talk | contribs)

(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

I use DigiGuide and xAP to change channel on my TV. There's a simple scripting plugin for DigiGuide that lets you call a vbscript or jscript. This is handy because it means you don't have to mess with the DigiGuide API just use simple script.

The script plugin .ini file lets you add events and context menu items. I just use a 'change channel' menu item on the channel bar. I compose the xAP messages in vbscript and then shell out to Stuart B's ((xAP send)) utility. xAP messages are picked up by Stuart's ((RedRat)) connector. I run digiguide on a laptop that's generally lives on the coffe table - the red rat is on another PC which feeds into my wired IR distribution.

The Digiguide scripting plugin (DG script) is at: http://freespace.virgin.net/julian.cable/DGscript.html

The send program, xAP RedRat Connector etc are at: www.xapframework.net

My script is pasted below. I have a line in the scripting.ini fle to call it from the channel menu:


Menu0=Select channel on Sky box



Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim argv, chanNo, digits, i, digit
Dim fso, f, shell, network, host

Set argv = WScript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = WScript.CreateObject("WScript.Shell")
Set f = fso.OpenTextFile("tune.xap", ForWriting, True)
Set network = WScript.CreateObject("WScript.Network")

host = lcase(network.ComputerName)

chanNo = argv(1)

digits = len(chanNo)

StartXAPScript f

for i = 1 to digits
 digit = mid(chanNo, i, 1)
 WriteXAPScriptBody f, "Sky+", CStr(digit)

EndXAPScript f

shell.Run "tune.xap", 2, true


Sub StartXAPScript(f)
f.writeline "xap-header"
f.writeline "{"
f.writeline "    v=12"
f.writeline "    hop=1"
f.writeline "    uid=FF123400"
f.writeline "    class=IR.Transmit"
f.writeline "    source=ersp.digiGuide." + host
f.writeline "}"
End Sub

Sub WriteXAPScriptBody(f, device, signal)
f.writeline "IR.Signal"
f.writeline "{"
f.writeline "    device=" + device
f.writeline "    signal=" + signal
f.writeline "}"
End Sub

Sub EndXAPScript(f)
End Sub