![]() |
Opensource Lichtsteuerung PC_DIMMER2008
Liste der Anhänge anzeigen (Anzahl: 2)
PC_DIMMER2012 - Das Opensource Lichtprogramm
Im Folgenden möchte ich den vor einiger Zeit begonnenen Post zu meinem Opensource-Projekt "PC_DIMMER" aktualisieren, damit in der DP nicht veraltete Informationen herumgeistern :) Das Projekt ist besonders in den letzten Monaten stark ausgebaut worden, sodass man vom programmiertechnischen einiges Interessantes finden kann. Zudem kann man im Sourcecode von mir etliche Anregungen für eigene Problemlösungen finden. Der PC_DIMMER2012 ist ein von mir entwickeltes Opensource-Lichtprogramm, mit dem man inzwischen jedes Bühnengerät steuern kann, was der Markt so hergibt. Darunter zählen Bewegtscheinwerfer (Scanner, MovingHeads, etc.), LED-Pars, Stroboskope und vieles mehr. Hier einmal Stichpunktartig die Funktionen: - Steuerung von bis zu 8192 Kanälen (16 DMX Universes) - Unterstützung für DMX512-Sender (über Ausgabeplugins erweiterbar) - Programmfunktionen über Plugins erweiterbar - Gerätebasierte Oberfläche. Über eine Skriptsprache können für jedes Gerät eigene Oberflächen in das Programm integriert werden, sodass man gezielt die Gerätefunktionen verwenden kann - Ein Audioeffektplayer erlaubt das zeitgenaue abspielen einer Lichtshow zu einer Audiodatei ähnlich einem Videoschnittprogramm - Eine umfassende Befehlssteuerung erlaubt das Steuern von Programmfunktionen aus allen Bereichen der Anwendung - Eine grafische Bühnenansicht erlaubt das schnelle Einstellen von Bühnenparametern - Über geometrische Kompensationsverfahren werden Bewegungen von zur Bühne verdrehten Bewegtscheinwerfern kompensiert - MIDI-, Joystick- und andere Steuerungen werden unterstützt - Webserver zur Steuerung der wichtigsten Funktionen über das Internet (Szenen, Kontrollpanel, Geräteübersicht, etc.) - für Architekturbeleuchtung sehr interessant Weitere Informationen findet man unter ![]() Vielen Dank auch an die diversen Leute, die mir hier in der DP mit Rat und Tat geholfen haben - besonders an die vielen anderen Opensource- und Teilquellcode-Schreiber, ohne die mein Projekt nie den heutigen stand erreicht hätte. PS: die nachfolgenden Posts beziehen sich zum Teil auf die ersten Programmversionen. Inzwischen ist der Sourcecode entsprechend angepasst und modernisiert worden. :zwinker: |
Re: 230V 128 Kanal PC_DIMMER v2.0
Wie waere es mal mit einer kraeftigen Vereinfachung des Codes?
Delphi-Quellcode:
und eine entsprechende Umstellung auf Schleifen und Index.
var
List: array [1..128] of TStringList; Dieses List1 bis List128 ist ja ein grauenvoll ineffizientes Codegrab. |
Re: 230V 128 Kanal PC_DIMMER v2.0
Hey, ich habe im Dezember erst mit Delphi angefangen - bin froh, dass ich das Programm soweit zum Laufen bekommen habe ;)
Für konstruktive Vorschläge bin ich mehr als offen und dankbar :) Besonders bei meiner Zuweisung der Namen von Buttons, Funktionen, Prozeduren usw. werden sich einigen die Fußnägel hochrollen - aber mittlerweile bin ich schon etwas mehr dahinter gekommen, gleich beim Programmieren den Sourcecode aufzuräumen... bisher bin ich aber zeitlich nicht dazu gekommen, die komplette Source zu bereinigen. Werde das wohl als nächstes mal in Angriff nehmen, da mir die Ideen für Zusätze für das Programm ausgegangen sind und das Programm soweit so gut läuft :) bis denn, Christian :) |
Re: 230V 128 Kanal PC_DIMMER v2.0
Ich habe mal die gigantischen "List"-Methoden durch Einzeiler ersetzt. Die Software ist prompt knapp 1500 Zeilen geschrumpft und die Schleifen laufen jetzt viel schneller ab...
Danke für den Tipp, ich habe irgendwie nicht dran gedacht, dass man das alles viel schneller per Array erledigen kann :) bis denn, Christian |
Re: 230V 128 Kanal PC_DIMMER v2.0
Sagmal du hast da 2 Ver. einmal Deu und einmal ENU.
Warum hast du das alles Doppelt scuh mal im Form nach Mehrsprachigen Anwendungen da gibst echt gute Tips das würde wohl den Verwaltungsaufwand stark verrigern |
Re: 230V 128 Kanal PC_DIMMER v2.0
Kann man die .dcu und .ddp Files aus dem naechsten Download entfernen? Ich habe heute 4.5KByte/Sec von SourceForge bekommen.
Kommen wir zur naechsten Vereinfachung. Delphi kann keine Arrays von Komponenten in der IDE. Die Loesung ist es selber zu machen. Beispiel:
Delphi-Quellcode:
Im FormCreate:
public
Scrollbars: array [1..8] of TScrollBar;
Delphi-Quellcode:
Nach dem obigen Prinzip kann man bestimmt noch ein paar Tausend Zeilen wegbekommen und gewinnt gleichzeitig Strukturen.
// die zusammengehoerigen Komponenten finden und ins Array eintragen
for I := Low(Scrollbars) to High(Scrollbars) do Scrollbars[I] := FindComponent(Format('ch%d', [I])); // abklappern und initialisieren // je nach Zweck sollte dies in eine Methode gepackt werden for I := Low(Scrollbars) to High(Scrollbars) do Scrollbars[I].Max := maxres; Alles in allem gefaellt mir die MainForm. Sie ist einfach und klar strukturiert. Es gibt noch ein paar Nickligkeiten, die man beseitigen sollte. Konsequenter deutsch schreiben. z. B. "Serielle Schnittstelle" Einheitliche Begriffe. Immer "Script" oder "Skript", nicht gemischt. Ich empfehle "Skript", aber "Level" sollte englisch bleiben. Die Feinheiten des GUI-Designs beachten. Es sollte z. B. "COM x..." heissen, da zur Durchfuehrung der Aktion des Menuepunktes eine Benutzereingabe notwendig ist (Dialog). Ebenfalls sollten alle Menuepunkte ein Tastenkuerzel haben. Das "Szene löschen" kein Kuerzel hat, aber "Alle Szenen löschen" doch, ist inkonsequent. |
Re: 230V 128 Kanal PC_DIMMER v2.0
Ich empfehle auch noch die "User Interface Hall of Shame" zu lesen (archiviert hier:
![]() Es ist ist lehrsam, auch wenn es so freundlich wie ein Schlag in die Fresse ist. |
Re: 230V 128 Kanal PC_DIMMER v2.0
Zitat:
|
Re: 230V 128 Kanal PC_DIMMER v2.0
Korrigiert und getestet.
|
Re: 230V 128 Kanal PC_DIMMER v2.0
Hallo Leute,
besten Dank für Lob, Kritik und Ideen. Werde mich dransetzen und die Vorschläge soweit wie möglich umsetzen. Wenn man Sachen wie mit den Scrollbar-Arrays weiß, fragt man sich natürlich, warum man das nicht schon vorher gemacht hat ;) Für weitere Vorschläge und Ideen bin ich offen und werde sie dankend annehmen :) @franktron: nachdem ich bereits wenige Zeit nach Veröffentlichung Rückmeldungen aus Kanada und Australien bekommen habe (über das DiscoLitez-Forum auf ![]() @Robert Marquardt: die .dcu und .ddp Files fliegen in der nächsten Source-Zip raus - sorry ;). Werde auch die Strings nocheinmal überarbeiten. Gibt's eigentlich ne Möglichkeit, ohne großen Aufwand konkrete Strings, die nicht in der IDE angezeigt werden mit dem Resource-Tool von Delphi zu übersetzen? Da habe ich nämlich so manchen Text, den ich nur auf Deutsch habe... Wahrscheinlich werde ich nochmla gründlicher suchen (siehe @franktron) Bis denn, Christian :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz