Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Scripte als Unterprogramm?
#1
Hallo, ich habe für mein Display ein paar Sachen gebastelt ( http://lcdhype.condense.de/index.php?showtopic=5311 ) wobei ich eine Sache faktisch in alle Scripte reinkopieren musste, damit es geht. Und zwar geht es da um die System-Lautstärke der Soundkarte, die ich als Balkendiagramm rechts auf den entsprechenden Symbolen meines Displays anzeige. Die entsprechenden Teile sind:

Im Header:

CODE
%DefFunc(SysVolume=
 %Mul(-1,%Dec(%Mul(%Plugin.VolumePeakmeter.GetVolumeMasterLevel(),-0.00000104166667),100))
)


Und dann im GFX-Mode (müsste auch im Textmode gehen)

CODE
%If(%Plugin.VolumePeakmeter.GetMute() = 1)Then { %LCD.SetSymbol(1, 1) } Else { %LCD.SetSymbol(1, 0) }
/Vol=2/
%If(%SysVolume() > 39.4) Then { %LCD.SetSymbol(11, 1) } Else { %LCD.SetSymbol(11, 0) }
/Vol=10/
%If(%SysVolume() > 63.7) Then { %LCD.SetSymbol(12, 1) } Else { %LCD.SetSymbol(12, 0) }
/Vol=18/
%If(%SysVolume() > 72.7) Then { %LCD.SetSymbol(13, 1) } Else { %LCD.SetSymbol(13, 0) }
/Vol=26/
%If(%SysVolume() > 78.7) Then { %LCD.SetSymbol(14, 1) } Else { %LCD.SetSymbol(14, 0) }
/Vol=34/
%If(%SysVolume() > 82.9) Then { %LCD.SetSymbol(15, 1) } Else { %LCD.SetSymbol(15, 0) }
/Vol=42/
%If(%SysVolume() > 86.3) Then { %LCD.SetSymbol(16, 1) } Else { %LCD.SetSymbol(16, 0) }
/Vol=50/
%If(%SysVolume() > 89.0) Then { %LCD.SetSymbol(17, 1) } Else { %LCD.SetSymbol(17, 0) }
/Vol=58/
%If(%SysVolume() > 91.3) Then { %LCD.SetSymbol(18, 1) } Else { %LCD.SetSymbol(18, 0) }
/Vol=66/
%If(%SysVolume() > 93.4) Then { %LCD.SetSymbol(19, 1) } Else { %LCD.SetSymbol(19, 0) }
/Vol=74/
%If(%SysVolume() > 95.2) Then { %LCD.SetSymbol(20, 1) } Else { %LCD.SetSymbol(20, 0) }
/Vol=82/
%If(%SysVolume() > 96.8) Then { %LCD.SetSymbol(21, 1) } Else { %LCD.SetSymbol(21, 0) }
/Vol=92/
%If(%SysVolume() > 98.6) Then { %LCD.SetSymbol(22, 1) } Else { %LCD.SetSymbol(22, 0) }


Das bläht natürlich alle Scripte ganz schön auf. Wäre es nicht möglich, so eine Art "GOSUB" zu realisieren" ? Also ich definiere ein Script "Lautstärke" mit obigem Inhalt in Header und GFXMode und in allen Scripten wo ich das angezeigt haben möchte, schreibe ich dann quasi %GOSUB Lautstärke rein, evtl. sogar mit Übergabe-Parameter (würde hier nicht gebraucht werden). Mit dem Aufruf würde das Script Lautstärke aufgerufen und wenn es abgearbeitet wurde, wird wieder ins Ausgangsscript zurück gesprungen.

Geht sowas?
#2
klar geht das

mit

%Common.Import(<script id>)

und das script ware dann in

#Code
#EndCode

damit schreibst dir eimalig das volume balken script
und importierst das nur in die anderen scripte
#3
Ok, probiere ich aus.
#4
Du kannst das auch einfach in ein Startscript in eine Funktion rein schreiben.

Start-Script (Index 0):
CODE
#Header
%DefFunc(SysVolume,Global=
 %Mul(-1,%Dec(%Mul(%Plugin.VolumePeakmeter.GetVolumeMasterLevel(),-0.00000104166667),100))
)

%DefFunc(SysVolumeSet,Global=
 %If(%Plugin.VolumePeakmeter.GetMute() = 1)Then { %LCD.SetSymbol(1, 1) } Else { %LCD.SetSymbol(1, 0) }
 /Vol=2/
 %If(%SysVolume() > 39.4) Then { %LCD.SetSymbol(11, 1) } Else { %LCD.SetSymbol(11, 0) }
 /Vol=10/
 %If(%SysVolume() > 63.7) Then { %LCD.SetSymbol(12, 1) } Else { %LCD.SetSymbol(12, 0) }
 /Vol=18/
 %If(%SysVolume() > 72.7) Then { %LCD.SetSymbol(13, 1) } Else { %LCD.SetSymbol(13, 0) }
 /Vol=26/
 %If(%SysVolume() > 78.7) Then { %LCD.SetSymbol(14, 1) } Else { %LCD.SetSymbol(14, 0) }
 /Vol=34/
 %If(%SysVolume() > 82.9) Then { %LCD.SetSymbol(15, 1) } Else { %LCD.SetSymbol(15, 0) }
 /Vol=42/
 %If(%SysVolume() > 86.3) Then { %LCD.SetSymbol(16, 1) } Else { %LCD.SetSymbol(16, 0) }
 /Vol=50/
 %If(%SysVolume() > 89.0) Then { %LCD.SetSymbol(17, 1) } Else { %LCD.SetSymbol(17, 0) }
 /Vol=58/
 %If(%SysVolume() > 91.3) Then { %LCD.SetSymbol(18, 1) } Else { %LCD.SetSymbol(18, 0) }
 /Vol=66/
 %If(%SysVolume() > 93.4) Then { %LCD.SetSymbol(19, 1) } Else { %LCD.SetSymbol(19, 0) }
 /Vol=74/
 %If(%SysVolume() > 95.2) Then { %LCD.SetSymbol(20, 1) } Else { %LCD.SetSymbol(20, 0) }
 /Vol=82/
 %If(%SysVolume() > 96.8) Then { %LCD.SetSymbol(21, 1) } Else { %LCD.SetSymbol(21, 0) }
 /Vol=92/
 %If(%SysVolume() > 98.6) Then { %LCD.SetSymbol(22, 1) } Else { %LCD.SetSymbol(22, 0) }
)

%Common.ChangeScreen(0, 1) //Script muss nur einmalig durchlaufen werden, dann Wechsel ins nächste
#EndHeader



Jetzt der Code, welcher in jedes Script rein kommt:
CODE
#TextMode

%SysVolumeSet() //Setzt den Lautstärkebalken

#EndTextMode
#5
Hey, Cool, so werde ich das machen! Danke!
#6
Funzt, danke!

Hier das neue Scriopt: http://lcdhype.condense.de/index.php?act=S...st=0#entry28181


Forum Jump:


Users browsing this thread: 1 Guest(s)