<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stellsi.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BorisM</id>
	<title>StellSi-Hilfewiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stellsi.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BorisM"/>
	<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php/Spezial:Beitr%C3%A4ge/BorisM"/>
	<updated>2026-04-04T10:26:23Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1365</id>
		<title>Development:Anforderungen Rangieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1365"/>
		<updated>2021-03-06T12:55:30Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Vorschläge und Anmerkungen zur Realisierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Klassische Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
* Richtungswechsel mit Lokumlauf mit und ohne Zugnummernwechsel&lt;br /&gt;
* Zug zwischenzeitlich auf einem Abstellgleis abstellen, bevor man ihn für die nächste Zugfahrt wieder hervor holt.&lt;br /&gt;
* Nahgüterzug, der manchmal eine bestimmte Wagengruppe enthält, manchmal nicht.&lt;br /&gt;
* Ein Wagen für den Güterschuppen, einer für die Rampe, ein paar weitere für die Übergabe, und die sind in zufälliger Reihenfolge im Zug.&lt;br /&gt;
* Ein Ablaufberg.&lt;br /&gt;
* Kurswagen: Übergang einer Wagengruppe von einem Zug auf einen anderen mit Hilfe einer fremden Lok&lt;br /&gt;
* Ein Güterzug kommt gemischt an, Lok Weg, mit Rangierlok alle Wagen mit Ziel 1 in Gleis A, mit Ziel 2 in Gleis B, danach wieder zusammensetzen.&lt;br /&gt;
* Bahnhofsrangierloks&lt;br /&gt;
* Einfahrt das Güterzugs in ein Hauptgleis, ausziehen auf Ausfahrgleis oder Ausziehgleis und in ein Nebengleis drücken. Selbes in entgegengesetzter Richtung.&lt;br /&gt;
* Einfahrt als Rangierfahrt (theoretisch seit einiger Zeit zulässig, in der Praxis nicht üblich)&lt;br /&gt;
* (Flügeln)&lt;br /&gt;
* Störfall: Vorzeitiges wenden eines Zuges (z.B. bei Bahnhöfen mit Gleisen im Einrichtungsbetrieb, Umsetzen auf Gleis mit ASig)&lt;br /&gt;
* Lok aus &lt;br /&gt;
* Loktausch mit Lok aus dem BW (Loktausch in der Dampflokzeit, Kopfbahnhof, ...)&lt;br /&gt;
* (Lokmeldeanlage München Hbf -&amp;gt; Lokmeldungen über Zugmeldeanlage)&lt;br /&gt;
* Verstärken/Schwächen (z.B. S-Bahn München)&lt;br /&gt;
* Britische Variante des Bahnbetriebs&lt;br /&gt;
* Anschlussbedienung (Anst, Awanst, ggf. kombiniert mit ZLB)&lt;br /&gt;
* (Sperrfahrten/Baugleis)&lt;br /&gt;
* (Einfahrt ins besetzte Gleis ohne Sh2)&lt;br /&gt;
&lt;br /&gt;
== Fragestellungen, die aus dem Konzept heraus kommen sollen ==&lt;br /&gt;
&lt;br /&gt;
* Bei Spurplanstellwerken:&lt;br /&gt;
** Wann trennt sich ein Fahrzug vom Zug und wie viele&lt;br /&gt;
** Wo wendet eine Rangierfahrt, wartet sie mglw. eine gewisse Länge vor einem Ls, um einen weiteren Zug davor zu lassen&lt;br /&gt;
** Wann vereinigen sich Züge und wie geht es mit dem Ergebnis weiter&lt;br /&gt;
* Bei klassischen Ls-Armen Stellwerken zusätzlich:&lt;br /&gt;
** Wie merkt die Rf, dass sie in einem klassischen Bereich ist?&lt;br /&gt;
** Sie muss dem Ww den Zielabschnitt vorschlagen, bis wohin sie vorziehen können dürfen will.(Bis hinter Weiche 2.)&lt;br /&gt;
** Der Ww muss sie dann zum vorziehen auffordern&lt;br /&gt;
* Bei Rangierbereichen zudem:&lt;br /&gt;
** Stellen von Weichen und bedienen der Schlüssel&lt;br /&gt;
* Unterschiedliche zeitliche Regelungen, je nach &amp;quot;Epoche&amp;quot; gibt es teilweise massive Unterschiede in den Abläufen.&lt;br /&gt;
* Wie Flexibilität für unterschiedliche Regelungen im Ausland herstellen (Scripting?) sowie auch betriebsstellenbezogene Besonderheiten.&lt;br /&gt;
&lt;br /&gt;
== Vorschläge und Anmerkungen zur Realisierung ==&lt;br /&gt;
&lt;br /&gt;
* Rangieren, Zugleitbetrieb, Anschlussbedienungen, Sperrfahrten.... sind nicht das gleiche, benötigen aber teilweise vermutlich die gleichen Mechanismen -&amp;gt; Synergien prüfen, ggf. gemeinsam planen.&lt;br /&gt;
* Zugfahrten sollten nicht beendet und separat fortgeführt werden müssen, wenn sie dies im Vorbild auch nicht tun, auch beim nachsortieren eines Nahgüterzuges.&lt;br /&gt;
* Schiebeloks sollten nicht selbst wissen, welcher Zug als nächstes kommt, sondern die Anweisungen sollten im Zug stehen&lt;br /&gt;
* Sofern Wegfindemechanismen zum Einsatz kommen, sollten diese bezüglich ZLB abgeklopft werden.&lt;br /&gt;
* Bei Wegvorgaben (Fahrplan, Vereinbarung der Rangierfahrt) sollten es möglich sein vorzugeben:&lt;br /&gt;
** Nur Start und Ziel&lt;br /&gt;
** bestimmte Wegpunkte (bis hinters LS, bis vor Signal xy)&lt;br /&gt;
** bestimmte Gleisgruppen&lt;br /&gt;
** Dynamisch definierbare Bedingungen für die Fortsetzung (z.B. Vorliegen eines Funkgesprächs)&lt;br /&gt;
*** Funkgespräche sollten vom Wortlaut her sowohl im Fahrplan als auch in der stwa als auch in einer stwb vorgegeben werden können)&lt;br /&gt;
** Vorgabe von Handlungen (z.B. Schlüssel aus Schlüsselsperre entnehmen, Weiche von Hand umstellen/zurückstellen, Schlüssel wieder in Schlüsselsperre einsperren, Meldung über Funk abgeben)&lt;br /&gt;
&lt;br /&gt;
== Mutmaßlich separate Konzepte ==&lt;br /&gt;
&lt;br /&gt;
* Ausziehgleis liegt beim Fdl des benachbarten Gbf (Rangieren über Streckenanschluss) =&amp;gt; Automatische Rückkehr der Rangierfahrten&lt;br /&gt;
* Automatische Rückkehr einer Schiebelok&lt;br /&gt;
* Entkuppeln während der Fahrt von Schiebeloks und Abstoßbetrieben sowie der vermutlich ähnlich gelagerte Ablaufbetrieb und dem Bewegen von Einzelwagen mit Hand (&amp;quot;Verschieben&amp;quot;) (Hinweis: Ablaufberg muss auch Oberammergau-Sicher sein)&lt;br /&gt;
* Ladegut-Konzept, Verbindung zu Rangieren sind Be- und Entladevorgänge.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1364</id>
		<title>Development:Anforderungen Rangieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1364"/>
		<updated>2021-03-06T12:52:42Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Vorschläge und Anmerkungen zur Realisierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Klassische Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
* Richtungswechsel mit Lokumlauf mit und ohne Zugnummernwechsel&lt;br /&gt;
* Zug zwischenzeitlich auf einem Abstellgleis abstellen, bevor man ihn für die nächste Zugfahrt wieder hervor holt.&lt;br /&gt;
* Nahgüterzug, der manchmal eine bestimmte Wagengruppe enthält, manchmal nicht.&lt;br /&gt;
* Ein Wagen für den Güterschuppen, einer für die Rampe, ein paar weitere für die Übergabe, und die sind in zufälliger Reihenfolge im Zug.&lt;br /&gt;
* Ein Ablaufberg.&lt;br /&gt;
* Kurswagen: Übergang einer Wagengruppe von einem Zug auf einen anderen mit Hilfe einer fremden Lok&lt;br /&gt;
* Ein Güterzug kommt gemischt an, Lok Weg, mit Rangierlok alle Wagen mit Ziel 1 in Gleis A, mit Ziel 2 in Gleis B, danach wieder zusammensetzen.&lt;br /&gt;
* Bahnhofsrangierloks&lt;br /&gt;
* Einfahrt das Güterzugs in ein Hauptgleis, ausziehen auf Ausfahrgleis oder Ausziehgleis und in ein Nebengleis drücken. Selbes in entgegengesetzter Richtung.&lt;br /&gt;
* Einfahrt als Rangierfahrt (theoretisch seit einiger Zeit zulässig, in der Praxis nicht üblich)&lt;br /&gt;
* (Flügeln)&lt;br /&gt;
* Störfall: Vorzeitiges wenden eines Zuges (z.B. bei Bahnhöfen mit Gleisen im Einrichtungsbetrieb, Umsetzen auf Gleis mit ASig)&lt;br /&gt;
* Lok aus &lt;br /&gt;
* Loktausch mit Lok aus dem BW (Loktausch in der Dampflokzeit, Kopfbahnhof, ...)&lt;br /&gt;
* (Lokmeldeanlage München Hbf -&amp;gt; Lokmeldungen über Zugmeldeanlage)&lt;br /&gt;
* Verstärken/Schwächen (z.B. S-Bahn München)&lt;br /&gt;
* Britische Variante des Bahnbetriebs&lt;br /&gt;
* Anschlussbedienung (Anst, Awanst, ggf. kombiniert mit ZLB)&lt;br /&gt;
* (Sperrfahrten/Baugleis)&lt;br /&gt;
* (Einfahrt ins besetzte Gleis ohne Sh2)&lt;br /&gt;
&lt;br /&gt;
== Fragestellungen, die aus dem Konzept heraus kommen sollen ==&lt;br /&gt;
&lt;br /&gt;
* Bei Spurplanstellwerken:&lt;br /&gt;
** Wann trennt sich ein Fahrzug vom Zug und wie viele&lt;br /&gt;
** Wo wendet eine Rangierfahrt, wartet sie mglw. eine gewisse Länge vor einem Ls, um einen weiteren Zug davor zu lassen&lt;br /&gt;
** Wann vereinigen sich Züge und wie geht es mit dem Ergebnis weiter&lt;br /&gt;
* Bei klassischen Ls-Armen Stellwerken zusätzlich:&lt;br /&gt;
** Wie merkt die Rf, dass sie in einem klassischen Bereich ist?&lt;br /&gt;
** Sie muss dem Ww den Zielabschnitt vorschlagen, bis wohin sie vorziehen können dürfen will.(Bis hinter Weiche 2.)&lt;br /&gt;
** Der Ww muss sie dann zum vorziehen auffordern&lt;br /&gt;
* Bei Rangierbereichen zudem:&lt;br /&gt;
** Stellen von Weichen und bedienen der Schlüssel&lt;br /&gt;
* Unterschiedliche zeitliche Regelungen, je nach &amp;quot;Epoche&amp;quot; gibt es teilweise massive Unterschiede in den Abläufen.&lt;br /&gt;
* Wie Flexibilität für unterschiedliche Regelungen im Ausland herstellen (Scripting?) sowie auch betriebsstellenbezogene Besonderheiten.&lt;br /&gt;
&lt;br /&gt;
== Vorschläge und Anmerkungen zur Realisierung ==&lt;br /&gt;
&lt;br /&gt;
* Zugfahrten sollten nicht beendet und separat fortgeführt werden müssen, wenn sie dies im Vorbild auch nicht tun, auch beim nachsortieren eines Nahgüterzuges.&lt;br /&gt;
* Schiebeloks sollten nicht selbst wissen, welcher Zug als nächstes kommt, sondern die Anweisungen sollten im Zug stehen&lt;br /&gt;
* Sofern Wegfindemechanismen zum Einsatz kommen, sollten diese bezüglich ZLB abgeklopft werden.&lt;br /&gt;
* Bei Wegvorgaben (Fahrplan, Vereinbarung der Rangierfahrt) sollten es möglich sein vorzugeben:&lt;br /&gt;
** Nur Start und Ziel&lt;br /&gt;
** bestimmte Wegpunkte (bis hinters LS, bis vor Signal xy)&lt;br /&gt;
** bestimmte Gleisgruppen&lt;br /&gt;
** Dynamisch definierbare Bedingungen für die Fortsetzung (z.B. Vorliegen eines Funkgesprächs)&lt;br /&gt;
*** Funkgespräche sollten vom Wortlaut her sowohl im Fahrplan als auch in der stwa als auch in einer stwb vorgegeben werden können)&lt;br /&gt;
** Vorgabe von Handlungen (z.B. Schlüssel aus Schlüsselsperre entnehmen, Weiche von Hand umstellen/zurückstellen, Schlüssel wieder in Schlüsselsperre einsperren, Meldung über Funk abgeben)&lt;br /&gt;
&lt;br /&gt;
== Mutmaßlich separate Konzepte ==&lt;br /&gt;
&lt;br /&gt;
* Ausziehgleis liegt beim Fdl des benachbarten Gbf (Rangieren über Streckenanschluss) =&amp;gt; Automatische Rückkehr der Rangierfahrten&lt;br /&gt;
* Automatische Rückkehr einer Schiebelok&lt;br /&gt;
* Entkuppeln während der Fahrt von Schiebeloks und Abstoßbetrieben sowie der vermutlich ähnlich gelagerte Ablaufbetrieb und dem Bewegen von Einzelwagen mit Hand (&amp;quot;Verschieben&amp;quot;) (Hinweis: Ablaufberg muss auch Oberammergau-Sicher sein)&lt;br /&gt;
* Ladegut-Konzept, Verbindung zu Rangieren sind Be- und Entladevorgänge.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1363</id>
		<title>Development:Anforderungen Rangieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1363"/>
		<updated>2021-03-06T12:49:24Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Fragestellungen, die aus dem Konzept heraus kommen sollen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Klassische Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
* Richtungswechsel mit Lokumlauf mit und ohne Zugnummernwechsel&lt;br /&gt;
* Zug zwischenzeitlich auf einem Abstellgleis abstellen, bevor man ihn für die nächste Zugfahrt wieder hervor holt.&lt;br /&gt;
* Nahgüterzug, der manchmal eine bestimmte Wagengruppe enthält, manchmal nicht.&lt;br /&gt;
* Ein Wagen für den Güterschuppen, einer für die Rampe, ein paar weitere für die Übergabe, und die sind in zufälliger Reihenfolge im Zug.&lt;br /&gt;
* Ein Ablaufberg.&lt;br /&gt;
* Kurswagen: Übergang einer Wagengruppe von einem Zug auf einen anderen mit Hilfe einer fremden Lok&lt;br /&gt;
* Ein Güterzug kommt gemischt an, Lok Weg, mit Rangierlok alle Wagen mit Ziel 1 in Gleis A, mit Ziel 2 in Gleis B, danach wieder zusammensetzen.&lt;br /&gt;
* Bahnhofsrangierloks&lt;br /&gt;
* Einfahrt das Güterzugs in ein Hauptgleis, ausziehen auf Ausfahrgleis oder Ausziehgleis und in ein Nebengleis drücken. Selbes in entgegengesetzter Richtung.&lt;br /&gt;
* Einfahrt als Rangierfahrt (theoretisch seit einiger Zeit zulässig, in der Praxis nicht üblich)&lt;br /&gt;
* (Flügeln)&lt;br /&gt;
* Störfall: Vorzeitiges wenden eines Zuges (z.B. bei Bahnhöfen mit Gleisen im Einrichtungsbetrieb, Umsetzen auf Gleis mit ASig)&lt;br /&gt;
* Lok aus &lt;br /&gt;
* Loktausch mit Lok aus dem BW (Loktausch in der Dampflokzeit, Kopfbahnhof, ...)&lt;br /&gt;
* (Lokmeldeanlage München Hbf -&amp;gt; Lokmeldungen über Zugmeldeanlage)&lt;br /&gt;
* Verstärken/Schwächen (z.B. S-Bahn München)&lt;br /&gt;
* Britische Variante des Bahnbetriebs&lt;br /&gt;
* Anschlussbedienung (Anst, Awanst, ggf. kombiniert mit ZLB)&lt;br /&gt;
* (Sperrfahrten/Baugleis)&lt;br /&gt;
* (Einfahrt ins besetzte Gleis ohne Sh2)&lt;br /&gt;
&lt;br /&gt;
== Fragestellungen, die aus dem Konzept heraus kommen sollen ==&lt;br /&gt;
&lt;br /&gt;
* Bei Spurplanstellwerken:&lt;br /&gt;
** Wann trennt sich ein Fahrzug vom Zug und wie viele&lt;br /&gt;
** Wo wendet eine Rangierfahrt, wartet sie mglw. eine gewisse Länge vor einem Ls, um einen weiteren Zug davor zu lassen&lt;br /&gt;
** Wann vereinigen sich Züge und wie geht es mit dem Ergebnis weiter&lt;br /&gt;
* Bei klassischen Ls-Armen Stellwerken zusätzlich:&lt;br /&gt;
** Wie merkt die Rf, dass sie in einem klassischen Bereich ist?&lt;br /&gt;
** Sie muss dem Ww den Zielabschnitt vorschlagen, bis wohin sie vorziehen können dürfen will.(Bis hinter Weiche 2.)&lt;br /&gt;
** Der Ww muss sie dann zum vorziehen auffordern&lt;br /&gt;
* Bei Rangierbereichen zudem:&lt;br /&gt;
** Stellen von Weichen und bedienen der Schlüssel&lt;br /&gt;
* Unterschiedliche zeitliche Regelungen, je nach &amp;quot;Epoche&amp;quot; gibt es teilweise massive Unterschiede in den Abläufen.&lt;br /&gt;
* Wie Flexibilität für unterschiedliche Regelungen im Ausland herstellen (Scripting?) sowie auch betriebsstellenbezogene Besonderheiten.&lt;br /&gt;
&lt;br /&gt;
== Vorschläge und Anmerkungen zur Realisierung ==&lt;br /&gt;
&lt;br /&gt;
* Zugfahrten sollten nicht beendet und separat fortgeführt werden müssen, wenn sie dies im Vorbild auch nicht tun, auch beim nachsortieren eines Nahgüterzuges.&lt;br /&gt;
* Schiebeloks sollten nicht selbst wissen, welcher Zug als nächstes kommt, sondern die Anweisungen sollten im Zug stehen&lt;br /&gt;
* Sofern Wegfindemechanismen zum Einsatz kommen, sollten diese bezüglich ZLB abgeklopft werden.&lt;br /&gt;
&lt;br /&gt;
== Mutmaßlich separate Konzepte ==&lt;br /&gt;
&lt;br /&gt;
* Ausziehgleis liegt beim Fdl des benachbarten Gbf (Rangieren über Streckenanschluss) =&amp;gt; Automatische Rückkehr der Rangierfahrten&lt;br /&gt;
* Automatische Rückkehr einer Schiebelok&lt;br /&gt;
* Entkuppeln während der Fahrt von Schiebeloks und Abstoßbetrieben sowie der vermutlich ähnlich gelagerte Ablaufbetrieb und dem Bewegen von Einzelwagen mit Hand (&amp;quot;Verschieben&amp;quot;) (Hinweis: Ablaufberg muss auch Oberammergau-Sicher sein)&lt;br /&gt;
* Ladegut-Konzept, Verbindung zu Rangieren sind Be- und Entladevorgänge.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1362</id>
		<title>Development:Anforderungen Rangieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1362"/>
		<updated>2021-03-06T12:46:50Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Klassische Anwendungsfälle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Klassische Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
* Richtungswechsel mit Lokumlauf mit und ohne Zugnummernwechsel&lt;br /&gt;
* Zug zwischenzeitlich auf einem Abstellgleis abstellen, bevor man ihn für die nächste Zugfahrt wieder hervor holt.&lt;br /&gt;
* Nahgüterzug, der manchmal eine bestimmte Wagengruppe enthält, manchmal nicht.&lt;br /&gt;
* Ein Wagen für den Güterschuppen, einer für die Rampe, ein paar weitere für die Übergabe, und die sind in zufälliger Reihenfolge im Zug.&lt;br /&gt;
* Ein Ablaufberg.&lt;br /&gt;
* Kurswagen: Übergang einer Wagengruppe von einem Zug auf einen anderen mit Hilfe einer fremden Lok&lt;br /&gt;
* Ein Güterzug kommt gemischt an, Lok Weg, mit Rangierlok alle Wagen mit Ziel 1 in Gleis A, mit Ziel 2 in Gleis B, danach wieder zusammensetzen.&lt;br /&gt;
* Bahnhofsrangierloks&lt;br /&gt;
* Einfahrt das Güterzugs in ein Hauptgleis, ausziehen auf Ausfahrgleis oder Ausziehgleis und in ein Nebengleis drücken. Selbes in entgegengesetzter Richtung.&lt;br /&gt;
* Einfahrt als Rangierfahrt (theoretisch seit einiger Zeit zulässig, in der Praxis nicht üblich)&lt;br /&gt;
* (Flügeln)&lt;br /&gt;
* Störfall: Vorzeitiges wenden eines Zuges (z.B. bei Bahnhöfen mit Gleisen im Einrichtungsbetrieb, Umsetzen auf Gleis mit ASig)&lt;br /&gt;
* Lok aus &lt;br /&gt;
* Loktausch mit Lok aus dem BW (Loktausch in der Dampflokzeit, Kopfbahnhof, ...)&lt;br /&gt;
* (Lokmeldeanlage München Hbf -&amp;gt; Lokmeldungen über Zugmeldeanlage)&lt;br /&gt;
* Verstärken/Schwächen (z.B. S-Bahn München)&lt;br /&gt;
* Britische Variante des Bahnbetriebs&lt;br /&gt;
* Anschlussbedienung (Anst, Awanst, ggf. kombiniert mit ZLB)&lt;br /&gt;
* (Sperrfahrten/Baugleis)&lt;br /&gt;
* (Einfahrt ins besetzte Gleis ohne Sh2)&lt;br /&gt;
&lt;br /&gt;
== Fragestellungen, die aus dem Konzept heraus kommen sollen ==&lt;br /&gt;
&lt;br /&gt;
* Bei Spurplanstellwerken:&lt;br /&gt;
** Wann trennt sich ein Fahrzug vom Zug und wie viele&lt;br /&gt;
** Wo wendet eine Rangierfahrt, wartet sie mglw. eine gewisse Länge vor einem Ls, um einen weiteren Zug davor zu lassen&lt;br /&gt;
** Wann vereinigen sich Züge und wie geht es mit dem Ergebnis weiter&lt;br /&gt;
* Bei klassischen Ls-Armen Stellwerken zusätzlich:&lt;br /&gt;
** Wie merkt die Rf, dass sie in einem klassischen Bereich ist?&lt;br /&gt;
** Sie muss dem Ww den Zielabschnitt vorschlagen, bis wohin sie vorziehen können dürfen will.(Bis hinter Weiche 2.)&lt;br /&gt;
** Der Ww muss sie dann zum vorziehen auffordern&lt;br /&gt;
* Bei Rangierbereichen zudem:&lt;br /&gt;
** Stellen von Weichen und bedienen der Schlüssel&lt;br /&gt;
&lt;br /&gt;
== Vorschläge und Anmerkungen zur Realisierung ==&lt;br /&gt;
&lt;br /&gt;
* Zugfahrten sollten nicht beendet und separat fortgeführt werden müssen, wenn sie dies im Vorbild auch nicht tun, auch beim nachsortieren eines Nahgüterzuges.&lt;br /&gt;
* Schiebeloks sollten nicht selbst wissen, welcher Zug als nächstes kommt, sondern die Anweisungen sollten im Zug stehen&lt;br /&gt;
* Sofern Wegfindemechanismen zum Einsatz kommen, sollten diese bezüglich ZLB abgeklopft werden.&lt;br /&gt;
&lt;br /&gt;
== Mutmaßlich separate Konzepte ==&lt;br /&gt;
&lt;br /&gt;
* Ausziehgleis liegt beim Fdl des benachbarten Gbf (Rangieren über Streckenanschluss) =&amp;gt; Automatische Rückkehr der Rangierfahrten&lt;br /&gt;
* Automatische Rückkehr einer Schiebelok&lt;br /&gt;
* Entkuppeln während der Fahrt von Schiebeloks und Abstoßbetrieben sowie der vermutlich ähnlich gelagerte Ablaufbetrieb und dem Bewegen von Einzelwagen mit Hand (&amp;quot;Verschieben&amp;quot;) (Hinweis: Ablaufberg muss auch Oberammergau-Sicher sein)&lt;br /&gt;
* Ladegut-Konzept, Verbindung zu Rangieren sind Be- und Entladevorgänge.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1361</id>
		<title>Development:Anforderungen Rangieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Rangieren&amp;diff=1361"/>
		<updated>2021-03-06T12:45:23Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Klassische Anwendungsfälle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Klassische Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
* Richtungswechsel mit Lokumlauf mit und ohne Zugnummernwechsel&lt;br /&gt;
* Zug zwischenzeitlich auf einem Abstellgleis abstellen, bevor man ihn für die nächste Zugfahrt wieder hervor holt.&lt;br /&gt;
* Nahgüterzug, der manchmal eine bestimmte Wagengruppe enthält, manchmal nicht.&lt;br /&gt;
* Ein Wagen für den Güterschuppen, einer für die Rampe, ein paar weitere für die Übergabe, und die sind in zufälliger Reihenfolge im Zug.&lt;br /&gt;
* Ein Ablaufberg.&lt;br /&gt;
* Kurswagen: Übergang einer Wagengruppe von einem Zug auf einen anderen mit Hilfe einer fremden Lok&lt;br /&gt;
* Ein Güterzug kommt gemischt an, Lok Weg, mit Rangierlok alle Wagen mit Ziel 1 in Gleis A, mit Ziel 2 in Gleis B, danach wieder zusammensetzen.&lt;br /&gt;
* Bahnhofsrangierloks&lt;br /&gt;
* Einfahrt das Güterzugs in ein Hauptgleis, ausziehen auf Ausfahrgleis oder Ausziehgleis und in ein Nebengleis drücken. Selbes in entgegengesetzter Richtung.&lt;br /&gt;
* Einfahrt als Rangierfahrt (theoretisch seit einiger Zeit zulässig, in der Praxis nicht üblich)&lt;br /&gt;
* (Flügeln)&lt;br /&gt;
* Störfall: Vorzeitiges wenden eines Zuges (z.B. bei Bahnhöfen mit Gleisen im Einrichtungsbetrieb, Umsetzen auf Gleis mit ASig)&lt;br /&gt;
* Lok aus &lt;br /&gt;
* Loktausch mit Lok aus dem BW (Loktausch in der Dampflokzeit, Kopfbahnhof, ...)&lt;br /&gt;
* Verstärken/Schwächen (z.B. S-Bahn München)&lt;br /&gt;
* Britische Variante des Bahnbetriebs&lt;br /&gt;
* Anschlussbedienung (Anst, Awanst, ggf. kombiniert mit ZLB)&lt;br /&gt;
* (Sperrfahrten/Baugleis)&lt;br /&gt;
&lt;br /&gt;
== Fragestellungen, die aus dem Konzept heraus kommen sollen ==&lt;br /&gt;
&lt;br /&gt;
* Bei Spurplanstellwerken:&lt;br /&gt;
** Wann trennt sich ein Fahrzug vom Zug und wie viele&lt;br /&gt;
** Wo wendet eine Rangierfahrt, wartet sie mglw. eine gewisse Länge vor einem Ls, um einen weiteren Zug davor zu lassen&lt;br /&gt;
** Wann vereinigen sich Züge und wie geht es mit dem Ergebnis weiter&lt;br /&gt;
* Bei klassischen Ls-Armen Stellwerken zusätzlich:&lt;br /&gt;
** Wie merkt die Rf, dass sie in einem klassischen Bereich ist?&lt;br /&gt;
** Sie muss dem Ww den Zielabschnitt vorschlagen, bis wohin sie vorziehen können dürfen will.(Bis hinter Weiche 2.)&lt;br /&gt;
** Der Ww muss sie dann zum vorziehen auffordern&lt;br /&gt;
* Bei Rangierbereichen zudem:&lt;br /&gt;
** Stellen von Weichen und bedienen der Schlüssel&lt;br /&gt;
&lt;br /&gt;
== Vorschläge und Anmerkungen zur Realisierung ==&lt;br /&gt;
&lt;br /&gt;
* Zugfahrten sollten nicht beendet und separat fortgeführt werden müssen, wenn sie dies im Vorbild auch nicht tun, auch beim nachsortieren eines Nahgüterzuges.&lt;br /&gt;
* Schiebeloks sollten nicht selbst wissen, welcher Zug als nächstes kommt, sondern die Anweisungen sollten im Zug stehen&lt;br /&gt;
* Sofern Wegfindemechanismen zum Einsatz kommen, sollten diese bezüglich ZLB abgeklopft werden.&lt;br /&gt;
&lt;br /&gt;
== Mutmaßlich separate Konzepte ==&lt;br /&gt;
&lt;br /&gt;
* Ausziehgleis liegt beim Fdl des benachbarten Gbf (Rangieren über Streckenanschluss) =&amp;gt; Automatische Rückkehr der Rangierfahrten&lt;br /&gt;
* Automatische Rückkehr einer Schiebelok&lt;br /&gt;
* Entkuppeln während der Fahrt von Schiebeloks und Abstoßbetrieben sowie der vermutlich ähnlich gelagerte Ablaufbetrieb und dem Bewegen von Einzelwagen mit Hand (&amp;quot;Verschieben&amp;quot;) (Hinweis: Ablaufberg muss auch Oberammergau-Sicher sein)&lt;br /&gt;
* Ladegut-Konzept, Verbindung zu Rangieren sind Be- und Entladevorgänge.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=467</id>
		<title>Aufbau Bibliothek SpDrS60</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=467"/>
		<updated>2017-06-30T21:12:28Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Aufbau Bibliotheken Bauformen]]&lt;br /&gt;
[[Kategorie:SpDrS60]]&lt;br /&gt;
= Ringleitungen =&lt;br /&gt;
== Tastenversorgung ==&lt;br /&gt;
Die Spannungsversorgung der Tasten des Stelltisches zählt nicht offiziell zu den Ringleitungen, da diese Schaltung im Original über den Tischverteiler und nicht über die einzelnen Relaisgruppen läuft. In StellSi wird die Spannungsversorgung der Tasten allerdings über Ringleitungen nachgebildet.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;RingleitungParallel A1_Weichentasten;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;RingleitungParallel A2_Zugstrtasten;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;RingleitungParallel A3_Rangierstrtasten;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;RingleitungParallel Gruppentasten;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte Hinweise im [[#Tastenrelais|Abschnitt „Tastenrelais“]] beachten.&lt;br /&gt;
&lt;br /&gt;
= Aufbau Relaisgruppen = &lt;br /&gt;
== Tastenrelais ==&lt;br /&gt;
Im SpDrS60 werden Tasten durch die Anschaltgruppe mit Spannung versorgt. Die Tasten sind dabei vier Gruppen zugeordnet: Weichentasten, Rangierstraßentasten, Zugstraßentasten sowie Gruppentasten. Die Kontakte der Tasten werden gruppenbezogen über den Tischverteiler mit Spannung versorgt, und können so gruppenweise durch die Anschaltgruppen abgeschaltet werden (z.B. be Tastenstörungen).&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Original erfolgt die Prüfung der Ringleitung in dieser Bibliothek in der Relaisgruppe - kommt von einem Tischfeld das Signal, dass eine Taste gedrückt wurde, muss also zwingend immer noch zusätzlich die entsprechende Ringleitung auf Spannung überprüft werden!&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=464</id>
		<title>Aufbau Bibliothek SpDrS60</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=464"/>
		<updated>2017-06-29T09:55:57Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Tastenversorgung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Aufbau Bibliotheken Bauformen]]&lt;br /&gt;
[[Kategorie:SpDrS60]]&lt;br /&gt;
= Ringleitungen =&lt;br /&gt;
== Tastenversorgung ==&lt;br /&gt;
Die Spannungsversorgung der Tasten des Stelltisches zählt nicht offiziell zu den Ringleitungen, da diese SChaltung im Original über den Tischverteiler und nicht über die einzelnen Relaisgruppen läuft. In StellSi wird die Spannungsversorgung der Tasten allerdings über Ringleitungen nachgebildet.&lt;br /&gt;
&lt;br /&gt;
A1_Weichentasten&lt;br /&gt;
A2_Zugstrtasten&lt;br /&gt;
A3_Rangierstrtasten&lt;br /&gt;
Gruppentasten&lt;br /&gt;
&lt;br /&gt;
Bitte Hinweise im Abschnitt &amp;quot;Tastenrelais&amp;quot; beachten.&lt;br /&gt;
&lt;br /&gt;
= Aufbau Relaisgruppen = &lt;br /&gt;
== Tastenrelais ==&lt;br /&gt;
Im SpDrS60 werden Tasten durch die Anschaltgruppe mit Spannung versorgt. Die Tasten sind dabei vier Gruppen zugeordnet: Weichentasten, Rangierstraßentasten, Zugstraßentasten sowie Gruppentasten. Die Kontakte der Tasten werden gruppenbezogen über den Tischverteiler mit Spannung versorgt, und können so gruppenweise durch die Anschaltgruppen abgeschaltet werden (z.B. be Tastenstörungen).&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Original erfolgt die Prüfung der Ringleitung in dieser Bibliothek in der Relaisgruppe - kommt von einem Tischfeld das Signal, dass eine Taste gedrückt wurde, muss also zwingend immer noch zusätzlich die entsprechende Ringleitung auf Spannung überprüft werden!&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=463</id>
		<title>Aufbau Bibliothek SpDrS60</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=463"/>
		<updated>2017-06-29T09:54:12Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Aufbau Bibliotheken Bauformen]]&lt;br /&gt;
[[Kategorie:SpDrS60]]&lt;br /&gt;
= Ringleitungen =&lt;br /&gt;
== Tastenversorgung ==&lt;br /&gt;
A1_Weichentasten&lt;br /&gt;
A2_Zugstrtasten&lt;br /&gt;
A3_Rangierstrtasten&lt;br /&gt;
Gruppentasten&lt;br /&gt;
&lt;br /&gt;
Bitte Hinweise im Abschnitt &amp;quot;Tastenrelais&amp;quot; beachten.&lt;br /&gt;
&lt;br /&gt;
= Aufbau Relaisgruppen = &lt;br /&gt;
== Tastenrelais ==&lt;br /&gt;
Im SpDrS60 werden Tasten durch die Anschaltgruppe mit Spannung versorgt. Die Tasten sind dabei vier Gruppen zugeordnet: Weichentasten, Rangierstraßentasten, Zugstraßentasten sowie Gruppentasten. Die Kontakte der Tasten werden gruppenbezogen über den Tischverteiler mit Spannung versorgt, und können so gruppenweise durch die Anschaltgruppen abgeschaltet werden (z.B. be Tastenstörungen).&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Original erfolgt die Prüfung der Ringleitung in dieser Bibliothek in der Relaisgruppe - kommt von einem Tischfeld das Signal, dass eine Taste gedrückt wurde, muss also zwingend immer noch zusätzlich die entsprechende Ringleitung auf Spannung überprüft werden!&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Aufbau_Bibliotheken_Bauformen&amp;diff=462</id>
		<title>Kategorie:Aufbau Bibliotheken Bauformen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Aufbau_Bibliotheken_Bauformen&amp;diff=462"/>
		<updated>2017-06-29T09:48:45Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Seiten dieser Kategorie machen bauformspezifische Festlegungen zu bestimmten Bibliotheken. Hier werden z.B. Ringleitungsnamen, Vorgaben zum Skriptaufbau etc. genannt. Diese Seiten sollten vor dem Erstellen eigener (z.B. stellwerkspezifischer) Relaisgruppen gelesen werden.&lt;br /&gt;
[[Kategorie:Neue Bauform]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Aufbau_Bibliotheken_Bauformen&amp;diff=461</id>
		<title>Kategorie:Aufbau Bibliotheken Bauformen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Aufbau_Bibliotheken_Bauformen&amp;diff=461"/>
		<updated>2017-06-29T09:47:53Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Die Seiten dieser Kategorie machen bauformspezifische Festlegungen zu bestimmten Bibliotheken. Hier werden z.B. Ringleitungsnamen, Vorgaben zum Skriptaufbau et…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Seiten dieser Kategorie machen bauformspezifische Festlegungen zu bestimmten Bibliotheken. Hier werden z.B. Ringleitungsnamen, Vorgaben zum Skriptaufbau etc. genannt. Diese Seiten sollten vor dem Erstellen eigener (z.B. stellwerkspezifischer) Relaisgruppen gelesen werden.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Tutorial:Erstellen_neuer_Bauformen&amp;diff=460</id>
		<title>Tutorial:Erstellen neuer Bauformen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Tutorial:Erstellen_neuer_Bauformen&amp;diff=460"/>
		<updated>2017-06-29T09:46:13Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;StellSi wurde in Hinblick auf eine möglichst große Flexibilität programmiert. Daher kann StellSi leicht um weitere Stellwerksbauformen erweitert werden. &lt;br /&gt;
&lt;br /&gt;
Wie StellSi selbst untergliedert sich die Erstellung dabei in drei Bereiche: &lt;br /&gt;
* Den [[Stelltisch]], mit der Erstellung neuer [[Tischfeld]]er -&amp;gt; [[Tutorial:Erstellen neuer Tischfelder|Tutorial]]&lt;br /&gt;
* Die [[Relaisanlage]], mit der Erstellung neuer [[Relaisgruppe]]n -&amp;gt; [[Tutorial:Erstellen neuer Relaisgruppen|Tutorial]]&lt;br /&gt;
* Die [[Aussenanlage]], mit der Erstellung neuer [[Signal]]e -&amp;gt; [[Tutorial:Erstellen neuer Signale|Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[:Kategorie:Aufbau Bibliotheken Bauformen|Aufbau der Bibliotheken spezifischer Bauformen]]&lt;br /&gt;
&lt;br /&gt;
== Dinge, für die ich noch keinen Vernünftigen Ort habe ==&lt;br /&gt;
=== Benennungsrichtlinien ===&lt;br /&gt;
Benennungsrichtlinien für stwb:&lt;br /&gt;
* klein geschriebener Anfangsbuchstabe.&lt;br /&gt;
* Ein Begriff als camelCase (z.B. steuerungTasten)&lt;br /&gt;
* Verschiedene Begriffe durch _ getrennt (z.B. suh1912_relaisgruppen)&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für Ordner: (ToDo: Warum um alles in der Welt habe ich dort abweichende Vorgehensweisen etabliert????????)&lt;br /&gt;
* Nur kleinbuchstaben, kein _, Trennung durch -&lt;br /&gt;
* Die Unterordnernamen images, sounds, internal (für interne stwbs) und _common (allgemeiner Unterordner für Bauformübergreifende Dinge) sind ggf. zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für Dateien (z.B. SVG):&lt;br /&gt;
* Nur die allgemeinen Regeln, nur a-z, A-Z, 0-9, _, -, keine Leer- oder Sonderzeichen.&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für vnames innerhalb von stwbs:&lt;br /&gt;
* klein geschriebener Anfangsbuchstabe.&lt;br /&gt;
* Nur a-z, A-Z, 0-9, _, -, keine Leer- oder Sonderzeichen.&lt;br /&gt;
&lt;br /&gt;
=== Fenster -&amp;gt; Debug -&amp;gt; Signalliste ===&lt;br /&gt;
* L = Fenster leeren&lt;br /&gt;
* H = Alle Daten seit Programmstart wiederherstellen. Achtung: Das Zeichnen der Liste dauert ewig. Hilfreich sein kann das Laden von kleinen Stellwerken oder '''vorher''' einen geeigneten Filter auszuwählen!&lt;br /&gt;
&lt;br /&gt;
* W-&amp;gt; Schnittstelle sendet Signal (Vorbereitung)&lt;br /&gt;
* -&amp;gt;W Schnittstelle sendet Signal (Ausführung) (Zusatz = bedeutet Wert hat sich nicht geändert.)&lt;br /&gt;
* W&amp;lt;- Schnittstelle empfängt Signal&lt;br /&gt;
* E-&amp;gt; Schnittstelle sendet Ereignis (Vorbereitung, Rest analog)&lt;br /&gt;
* -&amp;gt;| Schnittstelle sendet syncrones Signal&lt;br /&gt;
* &amp;lt;-| Schnittstelle empängt syncrones Signal&lt;br /&gt;
* W&amp;lt;-f Freie Eingangslogik empfängt (nur Empfänger werden seperat markiert)&lt;br /&gt;
* W&amp;lt;-a AngelScript empfängt (nur Empfänger werden seperat markiert, Anfang des Methodenaufrufes wird durch { Ende durch } markiert.)&lt;br /&gt;
* --a Diverse AngelScript-Methodenaufrufe, die in der Signalliste auftauchen. Es können auch die Zusätzte -init-f (Freie Eingangslogik), s (Schnittstele), ve (VerschlussregisterElement) oder vf (VerschlussFahrstrasse) auftauchen. Sie geben an, welche Methoden, die automatisch aufgerufen werden, gefunden wurden.&lt;br /&gt;
&lt;br /&gt;
=== Außenanlage -&amp;gt; Nachbarstellwerk ===&lt;br /&gt;
Die Funktion, mehrere Außenanlagen zu verbinden erfordert im Moment größere Mengen an Konfigurationseinstellungen. Ich bin mir inzwischen nicht sicher, ob ich das dauerhaft so behalte oder nicht früher oder später Konzepte einsetze, die mit weniger Konfiguration auskommen.&lt;br /&gt;
&lt;br /&gt;
* Allgemeine Hinweise: &lt;br /&gt;
** Sämmtliche konfigurationen finden in der Außenanlage statt.&lt;br /&gt;
** Es gilt wie bereits an anderer Stelle geschreiben: Der Streckenanschluss sollte sich auf Höhe des Einfahrsignals des Nachbarbahnhofs befinden.&lt;br /&gt;
* Registerkarte Nachbar&lt;br /&gt;
** Gruppenname: Bei beiden Stellwerken der gleiche Wert. Typischer Wert: &amp;quot;Astadt-Bstadt&amp;quot;&lt;br /&gt;
** Nachbarcode: Typsicher Wert: DS100-Abkürzung des Nachbarn.&lt;br /&gt;
** Version: Geben sie hier eine beliebige Version ein. Das Feld wird später einmal dazu verwendet, sich verändernde Schnittstellen zum Nachbarn festzustellen. Mit der StellSi-Version hat das nichts zu tun. Derzeit können sie z.B. einfach 1.0.0.0 angeben. (Der Standardwert ist eine ungültige Version, das sollte natürlich geändert werden.)&lt;br /&gt;
* Streckenanschluss =&amp;gt; Produkte&lt;br /&gt;
** Abkürzung: Nur für Spezialanwendungen mit Drittsimulationen&lt;br /&gt;
** Eigenes: Lassen sie sich eine zufällig Uuid generieren und geben sie als Produkt den Namen des Bahnhofes ein&lt;br /&gt;
** Fügen Sie dann über Plus ein fremdes Produkt hinzu und kopieren sie dazu die Uuid und den Produktnamen des korespondierenden Streckenanschluss in der anderen Außenanlage.&lt;br /&gt;
* Streckenanschluss =&amp;gt; Nachbar&lt;br /&gt;
** Fügen Sie alle Gleise und Signale zwischen dem Esig des Nachbarn (Streckenanschluss) und dem eigenen Esig (Höhe Streckenanschluss des Nachbarn) sowie den Streckenanschluss selbst hinzu. Wenn ihr Bahnhof als Esig ein echtes Signal hat, können Sie es ebenfalls hinzufügen.&lt;br /&gt;
** Wählen Sie am Streckenanschluss Kontrolle abgeben. &lt;br /&gt;
** Die Namen von Signalen müssen kreuzweise übereinstimmen. Eines der Signale muss als Kontrolle abgeben markiert sein und eine Relaisgruppe besitzen, die &amp;quot;nachbargesteuert&amp;quot; ist und daher Aktionen des Signals über das Netzwerk direkt ausführt.&lt;br /&gt;
** Der Streckenanschluss verhält sich so ähnlich wie ein Signal.&lt;br /&gt;
** Sie können auch für das eigene und das fremde Produkt den selben Namen für Signale oder Gleise verwenden.&lt;br /&gt;
** Gleise, bei denen Kontrolle abgeben angehakt ist, geben Züge, die zum Nachbarn fahren an diesen ab, sobald sie das Gleis betreten.&lt;br /&gt;
** Mehrere Gleise können den selben Namen haben, etwa wenn sie in der einen Außenanlage das Gleis zweigeteilt haben, weil sie das Vorsignal zum Einfahrsignal eingebaut haben, auf der anderen Außenanlage aber nicht. Die Summe der Gleislängen von Gleisen mit gleichem Namen sollte bei beiden Simulationen aber wenn möglich gleich sein.&lt;br /&gt;
* Verbindung herstellen&lt;br /&gt;
** Im deaktiverten Editmodus: Streckenanschluss =&amp;gt; Nachbar auswählen =&amp;gt; Verbinden um über Netzwer zu verbinden, oder um zu sehen, ob der Streckenanschluss verbunden ist.&lt;br /&gt;
** Wenn Sie beide betroffenen Außenanlagen laden wird die Verbindung beim laden automatisch hergestellt.&lt;br /&gt;
** Wenn Sie etwas geändert haben oder eine Meldung wollen, können Sie über Extras-&amp;gt;Verbinden mit anderen lokalen Außenanlagen Verbindungen trennen oder neue Verbindungen wieder aufbauen.&lt;br /&gt;
** Wenn Außenanlagen lokal verbunden sind werden die Nachbarn im Fernsprecher ausgeblendet. Wenn Sie über Netzwerk verbunden sind wird Freitext anstatt formelle Buttons angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Neue Bauform|!]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=459</id>
		<title>Aufbau Bibliothek SpDrS60</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Aufbau_Bibliothek_SpDrS60&amp;diff=459"/>
		<updated>2017-06-29T09:45:53Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Kategorie:Aufbau Bibliotheken Bauformen Kategorie:SpDrS60“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Aufbau Bibliotheken Bauformen]]&lt;br /&gt;
[[Kategorie:SpDrS60]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Tutorial:Erstellen_neuer_Bauformen&amp;diff=458</id>
		<title>Tutorial:Erstellen neuer Bauformen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Tutorial:Erstellen_neuer_Bauformen&amp;diff=458"/>
		<updated>2017-06-29T09:41:36Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;StellSi wurde in Hinblick auf eine möglichst große Flexibilität programmiert. Daher kann StellSi leicht um weitere Stellwerksbauformen erweitert werden. &lt;br /&gt;
&lt;br /&gt;
Wie StellSi selbst untergliedert sich die Erstellung dabei in drei Bereiche: &lt;br /&gt;
* Den [[Stelltisch]], mit der Erstellung neuer [[Tischfeld]]er -&amp;gt; [[Tutorial:Erstellen neuer Tischfelder|Tutorial]]&lt;br /&gt;
* Die [[Relaisanlage]], mit der Erstellung neuer [[Relaisgruppe]]n -&amp;gt; [[Tutorial:Erstellen neuer Relaisgruppen|Tutorial]]&lt;br /&gt;
* Die [[Aussenanlage]], mit der Erstellung neuer [[Signal]]e -&amp;gt; [[Tutorial:Erstellen neuer Signale|Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Aufbau Bibliotheken Bauformen|Aufbau der Bibliotheken spezifischer Bauformen]]&lt;br /&gt;
&lt;br /&gt;
== Dinge, für die ich noch keinen Vernünftigen Ort habe ==&lt;br /&gt;
=== Benennungsrichtlinien ===&lt;br /&gt;
Benennungsrichtlinien für stwb:&lt;br /&gt;
* klein geschriebener Anfangsbuchstabe.&lt;br /&gt;
* Ein Begriff als camelCase (z.B. steuerungTasten)&lt;br /&gt;
* Verschiedene Begriffe durch _ getrennt (z.B. suh1912_relaisgruppen)&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für Ordner: (ToDo: Warum um alles in der Welt habe ich dort abweichende Vorgehensweisen etabliert????????)&lt;br /&gt;
* Nur kleinbuchstaben, kein _, Trennung durch -&lt;br /&gt;
* Die Unterordnernamen images, sounds, internal (für interne stwbs) und _common (allgemeiner Unterordner für Bauformübergreifende Dinge) sind ggf. zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für Dateien (z.B. SVG):&lt;br /&gt;
* Nur die allgemeinen Regeln, nur a-z, A-Z, 0-9, _, -, keine Leer- oder Sonderzeichen.&lt;br /&gt;
&lt;br /&gt;
Benennungsrichtlinien für vnames innerhalb von stwbs:&lt;br /&gt;
* klein geschriebener Anfangsbuchstabe.&lt;br /&gt;
* Nur a-z, A-Z, 0-9, _, -, keine Leer- oder Sonderzeichen.&lt;br /&gt;
&lt;br /&gt;
=== Fenster -&amp;gt; Debug -&amp;gt; Signalliste ===&lt;br /&gt;
* L = Fenster leeren&lt;br /&gt;
* H = Alle Daten seit Programmstart wiederherstellen. Achtung: Das Zeichnen der Liste dauert ewig. Hilfreich sein kann das Laden von kleinen Stellwerken oder '''vorher''' einen geeigneten Filter auszuwählen!&lt;br /&gt;
&lt;br /&gt;
* W-&amp;gt; Schnittstelle sendet Signal (Vorbereitung)&lt;br /&gt;
* -&amp;gt;W Schnittstelle sendet Signal (Ausführung) (Zusatz = bedeutet Wert hat sich nicht geändert.)&lt;br /&gt;
* W&amp;lt;- Schnittstelle empfängt Signal&lt;br /&gt;
* E-&amp;gt; Schnittstelle sendet Ereignis (Vorbereitung, Rest analog)&lt;br /&gt;
* -&amp;gt;| Schnittstelle sendet syncrones Signal&lt;br /&gt;
* &amp;lt;-| Schnittstelle empängt syncrones Signal&lt;br /&gt;
* W&amp;lt;-f Freie Eingangslogik empfängt (nur Empfänger werden seperat markiert)&lt;br /&gt;
* W&amp;lt;-a AngelScript empfängt (nur Empfänger werden seperat markiert, Anfang des Methodenaufrufes wird durch { Ende durch } markiert.)&lt;br /&gt;
* --a Diverse AngelScript-Methodenaufrufe, die in der Signalliste auftauchen. Es können auch die Zusätzte -init-f (Freie Eingangslogik), s (Schnittstele), ve (VerschlussregisterElement) oder vf (VerschlussFahrstrasse) auftauchen. Sie geben an, welche Methoden, die automatisch aufgerufen werden, gefunden wurden.&lt;br /&gt;
&lt;br /&gt;
=== Außenanlage -&amp;gt; Nachbarstellwerk ===&lt;br /&gt;
Die Funktion, mehrere Außenanlagen zu verbinden erfordert im Moment größere Mengen an Konfigurationseinstellungen. Ich bin mir inzwischen nicht sicher, ob ich das dauerhaft so behalte oder nicht früher oder später Konzepte einsetze, die mit weniger Konfiguration auskommen.&lt;br /&gt;
&lt;br /&gt;
* Allgemeine Hinweise: &lt;br /&gt;
** Sämmtliche konfigurationen finden in der Außenanlage statt.&lt;br /&gt;
** Es gilt wie bereits an anderer Stelle geschreiben: Der Streckenanschluss sollte sich auf Höhe des Einfahrsignals des Nachbarbahnhofs befinden.&lt;br /&gt;
* Registerkarte Nachbar&lt;br /&gt;
** Gruppenname: Bei beiden Stellwerken der gleiche Wert. Typischer Wert: &amp;quot;Astadt-Bstadt&amp;quot;&lt;br /&gt;
** Nachbarcode: Typsicher Wert: DS100-Abkürzung des Nachbarn.&lt;br /&gt;
** Version: Geben sie hier eine beliebige Version ein. Das Feld wird später einmal dazu verwendet, sich verändernde Schnittstellen zum Nachbarn festzustellen. Mit der StellSi-Version hat das nichts zu tun. Derzeit können sie z.B. einfach 1.0.0.0 angeben. (Der Standardwert ist eine ungültige Version, das sollte natürlich geändert werden.)&lt;br /&gt;
* Streckenanschluss =&amp;gt; Produkte&lt;br /&gt;
** Abkürzung: Nur für Spezialanwendungen mit Drittsimulationen&lt;br /&gt;
** Eigenes: Lassen sie sich eine zufällig Uuid generieren und geben sie als Produkt den Namen des Bahnhofes ein&lt;br /&gt;
** Fügen Sie dann über Plus ein fremdes Produkt hinzu und kopieren sie dazu die Uuid und den Produktnamen des korespondierenden Streckenanschluss in der anderen Außenanlage.&lt;br /&gt;
* Streckenanschluss =&amp;gt; Nachbar&lt;br /&gt;
** Fügen Sie alle Gleise und Signale zwischen dem Esig des Nachbarn (Streckenanschluss) und dem eigenen Esig (Höhe Streckenanschluss des Nachbarn) sowie den Streckenanschluss selbst hinzu. Wenn ihr Bahnhof als Esig ein echtes Signal hat, können Sie es ebenfalls hinzufügen.&lt;br /&gt;
** Wählen Sie am Streckenanschluss Kontrolle abgeben. &lt;br /&gt;
** Die Namen von Signalen müssen kreuzweise übereinstimmen. Eines der Signale muss als Kontrolle abgeben markiert sein und eine Relaisgruppe besitzen, die &amp;quot;nachbargesteuert&amp;quot; ist und daher Aktionen des Signals über das Netzwerk direkt ausführt.&lt;br /&gt;
** Der Streckenanschluss verhält sich so ähnlich wie ein Signal.&lt;br /&gt;
** Sie können auch für das eigene und das fremde Produkt den selben Namen für Signale oder Gleise verwenden.&lt;br /&gt;
** Gleise, bei denen Kontrolle abgeben angehakt ist, geben Züge, die zum Nachbarn fahren an diesen ab, sobald sie das Gleis betreten.&lt;br /&gt;
** Mehrere Gleise können den selben Namen haben, etwa wenn sie in der einen Außenanlage das Gleis zweigeteilt haben, weil sie das Vorsignal zum Einfahrsignal eingebaut haben, auf der anderen Außenanlage aber nicht. Die Summe der Gleislängen von Gleisen mit gleichem Namen sollte bei beiden Simulationen aber wenn möglich gleich sein.&lt;br /&gt;
* Verbindung herstellen&lt;br /&gt;
** Im deaktiverten Editmodus: Streckenanschluss =&amp;gt; Nachbar auswählen =&amp;gt; Verbinden um über Netzwer zu verbinden, oder um zu sehen, ob der Streckenanschluss verbunden ist.&lt;br /&gt;
** Wenn Sie beide betroffenen Außenanlagen laden wird die Verbindung beim laden automatisch hergestellt.&lt;br /&gt;
** Wenn Sie etwas geändert haben oder eine Meldung wollen, können Sie über Extras-&amp;gt;Verbinden mit anderen lokalen Außenanlagen Verbindungen trennen oder neue Verbindungen wieder aufbauen.&lt;br /&gt;
** Wenn Außenanlagen lokal verbunden sind werden die Nachbarn im Fernsprecher ausgeblendet. Wenn Sie über Netzwerk verbunden sind wird Freitext anstatt formelle Buttons angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Neue Bauform|!]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_Grafikraster&amp;diff=437</id>
		<title>Development:Design Grafikraster</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_Grafikraster&amp;diff=437"/>
		<updated>2017-05-08T07:54:38Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „= Ziel = Das Grafikraster braucht dringend erweiterte Funktionen, um das angenehmere Erstellen von Anlagenteilen zu ermöglichen. Ziel ist ein möglichst groß…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ziel =&lt;br /&gt;
Das Grafikraster braucht dringend erweiterte Funktionen, um das angenehmere Erstellen von Anlagenteilen zu ermöglichen. Ziel ist ein möglichst großer Komfort und intuitive Bedienbarkeit für den Stellwerksbauer. Beispiele:&lt;br /&gt;
* Ein &amp;quot;Rand&amp;quot; sollte automatisch erstellt werden können (z.B. Rand des Stelltisches)&lt;br /&gt;
* Es sollten unterschiedliche Zeilenhöhen/Spaltenbreiten realisiert werden können&lt;br /&gt;
* Ein Anlagenelement (Stelltisch, Blockkasten, ...) sollte mit einem einzigen Grafikraster realisiert werden können. Es werden keine manuellen Grafikraster benötigt!&lt;br /&gt;
&lt;br /&gt;
Herausforderungen bieten dabei u.a. folgende Bauformen (bitte ergänzen!):&lt;br /&gt;
* EZMG (Trennung Leuchtmeldertafel sowie drei Tastenfelder)&lt;br /&gt;
* Felderblock mit seinen verschiedenen Etagen,der Möglichkeit weitere Bauteile an das Holz zu schrauben etc. (Anmerkung: Wie gehen wir hier mit dem Teil um, der Blocksperren, Fahrstrassenhebel etc enthält, was spezifisch zur Stellwerksbauform ist?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wunschliste (hier bitte alles Eintragen was man gern hätte, ohne die Realisierbarkeit zu betrachten):&lt;br /&gt;
* Flexible Spalten/Zeilenbreiten: Grafikraster passt sich selbst an Tischfeldgrößen an&lt;br /&gt;
* Möglichkeit, mehr als ein Element  in ein Feld zu packen, was sich automatisch aufstapelt (z.B. Tastensperre, darunter manchmal Anschalter)&lt;br /&gt;
* Evtl. Subunterteilung von Zellen durch ein Untergrafikraster?&lt;br /&gt;
&lt;br /&gt;
Anforderungen (Liste der umzusetzenden Funktionen):&lt;br /&gt;
* Grafikrasterbezogene Parameter, die an die Tischfelder weitergegeben werden können (z.B. Farbe Stelltisch o.ä.&lt;br /&gt;
* Automatische Erstellung von Randfeldern, Leerfeldern, ....&lt;br /&gt;
* Realisierung unterschiedlicher Zeilen/Spaltenbreiten möglich&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design_Stelltisch]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design_Stelltisch&amp;diff=436</id>
		<title>Kategorie:Design Stelltisch</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design_Stelltisch&amp;diff=436"/>
		<updated>2017-05-08T07:41:17Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Design_Allgemein]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design_Stelltisch&amp;diff=435</id>
		<title>Kategorie:Design Stelltisch</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design_Stelltisch&amp;diff=435"/>
		<updated>2017-05-08T07:40:34Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Leere Seite erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Fahrplan&amp;diff=265</id>
		<title>Development:Anforderungen Fahrplan</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Fahrplan&amp;diff=265"/>
		<updated>2015-12-27T14:12:52Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basisanforderungen ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Anforderung&lt;br /&gt;
|-&lt;br /&gt;
| Zugfahrten&lt;br /&gt;
|-&lt;br /&gt;
| Rangierfahrten&lt;br /&gt;
|-&lt;br /&gt;
| Gescheiter Editor (wie immer)&lt;br /&gt;
|-&lt;br /&gt;
| Am Besten mit einer JIT-Editierfähigkeit (alles Editierbar, was noch nicht benötigt verarbeitet wurde)&lt;br /&gt;
|-&lt;br /&gt;
| Rangierfahrteneinprogrammierung sollte eher Autonom ablaufen, und nicht viel Nutzerinteraktion benötigen&lt;br /&gt;
|-&lt;br /&gt;
| Verknüpfung von Zugfahrten außerhalb des Stellwerks (z.B. aus Zug 4711 wird außerhalb des Stellwerksbereich Zug 4712, Zug hat Wendezeit von x Minuten). Mit dieser Information ist es möglich die Verschleppung von Verspätungen auf rückkehrende Züge zu simulieren. Außerdem kann ein Zug vorzeitig gewendet werden, und das System weiß wie es vorzugehen hat.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=251</id>
		<title>Development:Design UndoRedo</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=251"/>
		<updated>2015-12-09T12:34:19Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Member list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Status: Entwurf zur Diskussion&lt;br /&gt;
&lt;br /&gt;
= Grundgedanken =&lt;br /&gt;
Das UndoRedo-System wird von den Klassen, die speicherbare Member besitzen, transparent intern gelöst. Dabei wird in den entsprechenden Setter-Methoden der Wert nicht mehr direkt gesetzt, sondern stattdessen das nötige UndeRedoObjekt generiert und an den UndoRedoManager übergeben. Dieser führt dann das Kommandoobjekt aus. Die Schnittstelle der Klasse nach außen wird dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
Eine Änderung des Zustandes der Klasse muss dabei immer zu einem konsistenten Datenstand führen. Daher gelten folgende Regeln:&lt;br /&gt;
1) Datenduplikation muss vermieden werden&lt;br /&gt;
2) Alle Klassen, die von Daten einer anderen Klasse abhängen, müssen bei einer Änderung benachrichtigt werden. Dafür kann z.B. das Beobachtermuster genutzt werden. Auf diese Art müssen z.B. die GUI-Elemente des Editors benachrichtigt werden, aber natürlich auch die eigentliche Simulationslogik u.ä.&lt;br /&gt;
&lt;br /&gt;
= Klassenhierarchie =&lt;br /&gt;
TODO in Klassendiagramm umwandeln&lt;br /&gt;
  (Beispielhaft: DateiVerwaltung)&lt;br /&gt;
enthält genau einen&lt;br /&gt;
  UndoRedoManager&lt;br /&gt;
enthält Liste&lt;br /&gt;
  UndoRedoObjekt&lt;br /&gt;
ist Basisklasse von &lt;br /&gt;
  UndoRedoGeneric&amp;lt;typedef TypeData, TODO Funktionen die Verhalten spezifizieren&amp;gt;&lt;br /&gt;
  UndoRedo{SpeziellerName}&lt;br /&gt;
&lt;br /&gt;
TODO Präfix UndoRedo so in Ordnung oder lieber &amp;quot;Command&amp;quot; o.ä.? &lt;br /&gt;
&lt;br /&gt;
= Klassen =&lt;br /&gt;
== UndoRedoManager ==&lt;br /&gt;
=== Konstruktor ===&lt;br /&gt;
Nimmt entgegen: &lt;br /&gt;
1) Wert, der gesetzt werden soll&lt;br /&gt;
2) Objekt, bei dem der Wert gesetzt werden soll&lt;br /&gt;
3) Do-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
4) Undo-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
&lt;br /&gt;
=== Methode bool hasChangesSinceLastSafe ===&lt;br /&gt;
return lastSafe!=actualState&lt;br /&gt;
&lt;br /&gt;
=== Methode redo() ===&lt;br /&gt;
++actualState;&lt;br /&gt;
actualState-&amp;gt;do();&lt;br /&gt;
emitHasChanged();&lt;br /&gt;
&lt;br /&gt;
=== Methode undo() ===&lt;br /&gt;
actualState-&amp;gt;undo();&lt;br /&gt;
--actualState;&lt;br /&gt;
&lt;br /&gt;
=== Methode addCommand(UndoRedoObject* command) ===&lt;br /&gt;
list.delete(actualState+1, list.end();&lt;br /&gt;
if (!actualState-&amp;gt;tryAppendAndRun(command))&lt;br /&gt;
  list.append(command);&lt;br /&gt;
  command-&amp;gt;do();&lt;br /&gt;
actualState=list.end()-1;&lt;br /&gt;
&lt;br /&gt;
=== Methode notifyFileHasSaved() ===&lt;br /&gt;
lastSafe=actualState;&lt;br /&gt;
&lt;br /&gt;
=== Private Methode emitHasChanged() ===&lt;br /&gt;
if (lastHasChanged!=hasChangesSinceLastSave)&lt;br /&gt;
  lastHasChanged=hasChangesSinceLastSave;&lt;br /&gt;
  emit hasChangesChanged(lastHasChanged);&lt;br /&gt;
&lt;br /&gt;
=== Signal hasChangesChanged(bool fileIsChanged) ===&lt;br /&gt;
&lt;br /&gt;
=== Member undoRedoList_ ===&lt;br /&gt;
Liste der Undo-Redo-Objekte&lt;br /&gt;
&lt;br /&gt;
=== Member lastSafe ===&lt;br /&gt;
Iterator auf den Listeneintrag, der dem letzten Speichern entspricht&lt;br /&gt;
&lt;br /&gt;
=== Member actualState ===&lt;br /&gt;
Iterator auf den Listeneintrag, der gerade aktuell ist&lt;br /&gt;
&lt;br /&gt;
== UndoRedoObjekt ==&lt;br /&gt;
&lt;br /&gt;
=== Methode Do ===&lt;br /&gt;
Führt den Befehl aus, speichert den alten Wert als Vorbereitung für undo()&lt;br /&gt;
&lt;br /&gt;
=== Methode Undo ===&lt;br /&gt;
Führt den Befehl aus,  speichert den alten Wert als Vorbereitung für do() (was in dem Fall ein redo ist)&lt;br /&gt;
&lt;br /&gt;
=== Methode tryAppendAndRun(UndoRedoObjekt* command) ===&lt;br /&gt;
wenn Typ übereinstimmt, state stimmt und das Kommandoobjekt darauf ausgelegt ist: Führe aktuelle Änderung mit der letzten Änderung zusammen. Beispiel: Ein String wird mehrere Male hintereinander geändert (z.B. jeder Buchstabe löst ein Änderungssignal aus). In dem Fall sollte nicht für jeden Buchstaben ein eigenes Kommandoobjekt erzeugt werden, das macht die Änderungen so unpraktisch...&lt;br /&gt;
&lt;br /&gt;
=== Member state ===&lt;br /&gt;
Hält die Information, ob das Objekt ausgeführt wurde oder rückgängig gemacht wurde&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design_Allgemein_Editoren]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=250</id>
		<title>Development:Design UndoRedo</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=250"/>
		<updated>2015-12-09T12:01:33Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Methode fileHasBeenSaved() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Status: Entwurf zur Diskussion&lt;br /&gt;
&lt;br /&gt;
= Grundgedanken =&lt;br /&gt;
Das UndoRedo-System wird von den Klassen, die speicherbare Member besitzen, transparent intern gelöst. Dabei wird in den entsprechenden Setter-Methoden der Wert nicht mehr direkt gesetzt, sondern stattdessen das nötige UndeRedoObjekt generiert und an den UndoRedoManager übergeben. Dieser führt dann das Kommandoobjekt aus. Die Schnittstelle der Klasse nach außen wird dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
Eine Änderung des Zustandes der Klasse muss dabei immer zu einem konsistenten Datenstand führen. Daher gelten folgende Regeln:&lt;br /&gt;
1) Datenduplikation muss vermieden werden&lt;br /&gt;
2) Alle Klassen, die von Daten einer anderen Klasse abhängen, müssen bei einer Änderung benachrichtigt werden. Dafür kann z.B. das Beobachtermuster genutzt werden. Auf diese Art müssen z.B. die GUI-Elemente des Editors benachrichtigt werden, aber natürlich auch die eigentliche Simulationslogik u.ä.&lt;br /&gt;
&lt;br /&gt;
= Klassenhierarchie =&lt;br /&gt;
TODO in Klassendiagramm umwandeln&lt;br /&gt;
  (Beispielhaft: DateiVerwaltung)&lt;br /&gt;
enthält genau einen&lt;br /&gt;
  UndoRedoManager&lt;br /&gt;
enthält Liste&lt;br /&gt;
  UndoRedoObjekt&lt;br /&gt;
ist Basisklasse von &lt;br /&gt;
  UndoRedoGeneric&amp;lt;typedef TypeData, TODO Funktionen die Verhalten spezifizieren&amp;gt;&lt;br /&gt;
  UndoRedo{SpeziellerName}&lt;br /&gt;
&lt;br /&gt;
TODO Präfix UndoRedo so in Ordnung oder lieber &amp;quot;Command&amp;quot; o.ä.? &lt;br /&gt;
&lt;br /&gt;
= Klassen =&lt;br /&gt;
== UndoRedoManager ==&lt;br /&gt;
=== Konstruktor ===&lt;br /&gt;
Nimmt entgegen: &lt;br /&gt;
1) Wert, der gesetzt werden soll&lt;br /&gt;
2) Objekt, bei dem der Wert gesetzt werden soll&lt;br /&gt;
3) Do-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
4) Undo-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
&lt;br /&gt;
=== Methode bool hasChangesSinceLastSafe ===&lt;br /&gt;
return lastSafe!=actualState&lt;br /&gt;
&lt;br /&gt;
=== Methode redo() ===&lt;br /&gt;
++actualState;&lt;br /&gt;
actualState-&amp;gt;do();&lt;br /&gt;
emitHasChanged();&lt;br /&gt;
&lt;br /&gt;
=== Methode undo() ===&lt;br /&gt;
actualState-&amp;gt;undo();&lt;br /&gt;
--actualState;&lt;br /&gt;
&lt;br /&gt;
=== Methode addCommand(UndoRedoObject* command) ===&lt;br /&gt;
list.delete(actualState+1, list.end();&lt;br /&gt;
if (!actualState-&amp;gt;tryAppendAndRun(command))&lt;br /&gt;
  list.append(command);&lt;br /&gt;
  command-&amp;gt;do();&lt;br /&gt;
actualState=list.end()-1;&lt;br /&gt;
&lt;br /&gt;
=== Methode notifyFileHasSaved() ===&lt;br /&gt;
lastSafe=actualState;&lt;br /&gt;
&lt;br /&gt;
=== Private Methode emitHasChanged() ===&lt;br /&gt;
if (lastHasChanged!=hasChangesSinceLastSave)&lt;br /&gt;
  lastHasChanged=hasChangesSinceLastSave;&lt;br /&gt;
  emit hasChangesChanged(lastHasChanged);&lt;br /&gt;
&lt;br /&gt;
=== Signal hasChangesChanged(bool fileIsChanged) ===&lt;br /&gt;
&lt;br /&gt;
=== Member list ===&lt;br /&gt;
Liste der Undo-Redo-Objekte&lt;br /&gt;
&lt;br /&gt;
=== Member lastSafe ===&lt;br /&gt;
Iterator auf den Listeneintrag, der dem letzten Speichern entspricht&lt;br /&gt;
&lt;br /&gt;
=== Member actualState ===&lt;br /&gt;
Iterator auf den Listeneintrag, der gerade aktuell ist&lt;br /&gt;
&lt;br /&gt;
== UndoRedoObjekt ==&lt;br /&gt;
&lt;br /&gt;
=== Methode Do ===&lt;br /&gt;
Führt den Befehl aus, speichert den alten Wert als Vorbereitung für undo()&lt;br /&gt;
&lt;br /&gt;
=== Methode Undo ===&lt;br /&gt;
Führt den Befehl aus,  speichert den alten Wert als Vorbereitung für do() (was in dem Fall ein redo ist)&lt;br /&gt;
&lt;br /&gt;
=== Methode tryAppendAndRun(UndoRedoObjekt* command) ===&lt;br /&gt;
wenn Typ übereinstimmt, state stimmt und das Kommandoobjekt darauf ausgelegt ist: Führe aktuelle Änderung mit der letzten Änderung zusammen. Beispiel: Ein String wird mehrere Male hintereinander geändert (z.B. jeder Buchstabe löst ein Änderungssignal aus). In dem Fall sollte nicht für jeden Buchstaben ein eigenes Kommandoobjekt erzeugt werden, das macht die Änderungen so unpraktisch...&lt;br /&gt;
&lt;br /&gt;
=== Member state ===&lt;br /&gt;
Hält die Information, ob das Objekt ausgeführt wurde oder rückgängig gemacht wurde&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design_Allgemein_Editoren]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=249</id>
		<title>Development:Design UndoRedo</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=249"/>
		<updated>2015-12-09T12:00:07Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Methode appendCommand(UndoRedoObject* command) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Status: Entwurf zur Diskussion&lt;br /&gt;
&lt;br /&gt;
= Grundgedanken =&lt;br /&gt;
Das UndoRedo-System wird von den Klassen, die speicherbare Member besitzen, transparent intern gelöst. Dabei wird in den entsprechenden Setter-Methoden der Wert nicht mehr direkt gesetzt, sondern stattdessen das nötige UndeRedoObjekt generiert und an den UndoRedoManager übergeben. Dieser führt dann das Kommandoobjekt aus. Die Schnittstelle der Klasse nach außen wird dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
Eine Änderung des Zustandes der Klasse muss dabei immer zu einem konsistenten Datenstand führen. Daher gelten folgende Regeln:&lt;br /&gt;
1) Datenduplikation muss vermieden werden&lt;br /&gt;
2) Alle Klassen, die von Daten einer anderen Klasse abhängen, müssen bei einer Änderung benachrichtigt werden. Dafür kann z.B. das Beobachtermuster genutzt werden. Auf diese Art müssen z.B. die GUI-Elemente des Editors benachrichtigt werden, aber natürlich auch die eigentliche Simulationslogik u.ä.&lt;br /&gt;
&lt;br /&gt;
= Klassenhierarchie =&lt;br /&gt;
TODO in Klassendiagramm umwandeln&lt;br /&gt;
  (Beispielhaft: DateiVerwaltung)&lt;br /&gt;
enthält genau einen&lt;br /&gt;
  UndoRedoManager&lt;br /&gt;
enthält Liste&lt;br /&gt;
  UndoRedoObjekt&lt;br /&gt;
ist Basisklasse von &lt;br /&gt;
  UndoRedoGeneric&amp;lt;typedef TypeData, TODO Funktionen die Verhalten spezifizieren&amp;gt;&lt;br /&gt;
  UndoRedo{SpeziellerName}&lt;br /&gt;
&lt;br /&gt;
TODO Präfix UndoRedo so in Ordnung oder lieber &amp;quot;Command&amp;quot; o.ä.? &lt;br /&gt;
&lt;br /&gt;
= Klassen =&lt;br /&gt;
== UndoRedoManager ==&lt;br /&gt;
=== Konstruktor ===&lt;br /&gt;
Nimmt entgegen: &lt;br /&gt;
1) Wert, der gesetzt werden soll&lt;br /&gt;
2) Objekt, bei dem der Wert gesetzt werden soll&lt;br /&gt;
3) Do-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
4) Undo-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
&lt;br /&gt;
=== Methode bool hasChangesSinceLastSafe ===&lt;br /&gt;
return lastSafe!=actualState&lt;br /&gt;
&lt;br /&gt;
=== Methode redo() ===&lt;br /&gt;
++actualState;&lt;br /&gt;
actualState-&amp;gt;do();&lt;br /&gt;
emitHasChanged();&lt;br /&gt;
&lt;br /&gt;
=== Methode undo() ===&lt;br /&gt;
actualState-&amp;gt;undo();&lt;br /&gt;
--actualState;&lt;br /&gt;
&lt;br /&gt;
=== Methode addCommand(UndoRedoObject* command) ===&lt;br /&gt;
list.delete(actualState+1, list.end();&lt;br /&gt;
if (!actualState-&amp;gt;tryAppendAndRun(command))&lt;br /&gt;
  list.append(command);&lt;br /&gt;
  command-&amp;gt;do();&lt;br /&gt;
actualState=list.end()-1;&lt;br /&gt;
&lt;br /&gt;
=== Methode fileHasBeenSaved() ===&lt;br /&gt;
lastSafe=actualState;&lt;br /&gt;
&lt;br /&gt;
=== Private Methode emitHasChanged() ===&lt;br /&gt;
if (lastHasChanged!=hasChangesSinceLastSave)&lt;br /&gt;
  lastHasChanged=hasChangesSinceLastSave;&lt;br /&gt;
  emit hasChangesChanged(lastHasChanged);&lt;br /&gt;
&lt;br /&gt;
=== Signal hasChangesChanged(bool fileIsChanged) ===&lt;br /&gt;
&lt;br /&gt;
=== Member list ===&lt;br /&gt;
Liste der Undo-Redo-Objekte&lt;br /&gt;
&lt;br /&gt;
=== Member lastSafe ===&lt;br /&gt;
Iterator auf den Listeneintrag, der dem letzten Speichern entspricht&lt;br /&gt;
&lt;br /&gt;
=== Member actualState ===&lt;br /&gt;
Iterator auf den Listeneintrag, der gerade aktuell ist&lt;br /&gt;
&lt;br /&gt;
== UndoRedoObjekt ==&lt;br /&gt;
&lt;br /&gt;
=== Methode Do ===&lt;br /&gt;
Führt den Befehl aus, speichert den alten Wert als Vorbereitung für undo()&lt;br /&gt;
&lt;br /&gt;
=== Methode Undo ===&lt;br /&gt;
Führt den Befehl aus,  speichert den alten Wert als Vorbereitung für do() (was in dem Fall ein redo ist)&lt;br /&gt;
&lt;br /&gt;
=== Methode tryAppendAndRun(UndoRedoObjekt* command) ===&lt;br /&gt;
wenn Typ übereinstimmt, state stimmt und das Kommandoobjekt darauf ausgelegt ist: Führe aktuelle Änderung mit der letzten Änderung zusammen. Beispiel: Ein String wird mehrere Male hintereinander geändert (z.B. jeder Buchstabe löst ein Änderungssignal aus). In dem Fall sollte nicht für jeden Buchstaben ein eigenes Kommandoobjekt erzeugt werden, das macht die Änderungen so unpraktisch...&lt;br /&gt;
&lt;br /&gt;
=== Member state ===&lt;br /&gt;
Hält die Information, ob das Objekt ausgeführt wurde oder rückgängig gemacht wurde&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design_Allgemein_Editoren]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=248</id>
		<title>Kategorie:Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=248"/>
		<updated>2015-12-08T21:00:58Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Überblick über alle Designfestlegungen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=247</id>
		<title>Development:Design UndoRedo</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=247"/>
		<updated>2015-12-08T12:10:14Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Status: Entwurf zur Diskussion&lt;br /&gt;
&lt;br /&gt;
= Grundgedanken =&lt;br /&gt;
Das UndoRedo-System wird von den Klassen, die speicherbare Member besitzen, transparent intern gelöst. Dabei wird in den entsprechenden Setter-Methoden der Wert nicht mehr direkt gesetzt, sondern stattdessen das nötige UndeRedoObjekt generiert und an den UndoRedoManager übergeben. Dieser führt dann das Kommandoobjekt aus. Die Schnittstelle der Klasse nach außen wird dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
Eine Änderung des Zustandes der Klasse muss dabei immer zu einem konsistenten Datenstand führen. Daher gelten folgende Regeln:&lt;br /&gt;
1) Datenduplikation muss vermieden werden&lt;br /&gt;
2) Alle Klassen, die von Daten einer anderen Klasse abhängen, müssen bei einer Änderung benachrichtigt werden. Dafür kann z.B. das Beobachtermuster genutzt werden. Auf diese Art müssen z.B. die GUI-Elemente des Editors benachrichtigt werden, aber natürlich auch die eigentliche Simulationslogik u.ä.&lt;br /&gt;
&lt;br /&gt;
= Klassenhierarchie =&lt;br /&gt;
TODO in Klassendiagramm umwandeln&lt;br /&gt;
  (Beispielhaft: DateiVerwaltung)&lt;br /&gt;
enthält genau einen&lt;br /&gt;
  UndoRedoManager&lt;br /&gt;
enthält Liste&lt;br /&gt;
  UndoRedoObjekt&lt;br /&gt;
ist Basisklasse von &lt;br /&gt;
  UndoRedoGeneric&amp;lt;typedef TypeData, TODO Funktionen die Verhalten spezifizieren&amp;gt;&lt;br /&gt;
  UndoRedo{SpeziellerName}&lt;br /&gt;
&lt;br /&gt;
TODO Präfix UndoRedo so in Ordnung oder lieber &amp;quot;Command&amp;quot; o.ä.? &lt;br /&gt;
&lt;br /&gt;
= Klassen =&lt;br /&gt;
== UndoRedoManager ==&lt;br /&gt;
=== Konstruktor ===&lt;br /&gt;
Nimmt entgegen: &lt;br /&gt;
1) Wert, der gesetzt werden soll&lt;br /&gt;
2) Objekt, bei dem der Wert gesetzt werden soll&lt;br /&gt;
3) Do-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
4) Undo-Methode des Objekts, bei dem der Wert gesetzt werden soll&lt;br /&gt;
&lt;br /&gt;
=== Methode bool hasChangesSinceLastSafe ===&lt;br /&gt;
return lastSafe!=actualState&lt;br /&gt;
&lt;br /&gt;
=== Methode redo() ===&lt;br /&gt;
++actualState;&lt;br /&gt;
actualState-&amp;gt;do();&lt;br /&gt;
emitHasChanged();&lt;br /&gt;
&lt;br /&gt;
=== Methode undo() ===&lt;br /&gt;
actualState-&amp;gt;undo();&lt;br /&gt;
--actualState;&lt;br /&gt;
&lt;br /&gt;
=== Methode appendCommand(UndoRedoObject* command) ===&lt;br /&gt;
list.delete(actualState+1, list.end();&lt;br /&gt;
if (!actualState-&amp;gt;tryAppendAndRun(command))&lt;br /&gt;
  list.append(command);&lt;br /&gt;
  command-&amp;gt;do();&lt;br /&gt;
actualState=list.end()-1;&lt;br /&gt;
&lt;br /&gt;
=== Methode fileHasBeenSaved() ===&lt;br /&gt;
lastSafe=actualState;&lt;br /&gt;
&lt;br /&gt;
=== Private Methode emitHasChanged() ===&lt;br /&gt;
if (lastHasChanged!=hasChangesSinceLastSave)&lt;br /&gt;
  lastHasChanged=hasChangesSinceLastSave;&lt;br /&gt;
  emit hasChangesChanged(lastHasChanged);&lt;br /&gt;
&lt;br /&gt;
=== Signal hasChangesChanged(bool fileIsChanged) ===&lt;br /&gt;
&lt;br /&gt;
=== Member list ===&lt;br /&gt;
Liste der Undo-Redo-Objekte&lt;br /&gt;
&lt;br /&gt;
=== Member lastSafe ===&lt;br /&gt;
Iterator auf den Listeneintrag, der dem letzten Speichern entspricht&lt;br /&gt;
&lt;br /&gt;
=== Member actualState ===&lt;br /&gt;
Iterator auf den Listeneintrag, der gerade aktuell ist&lt;br /&gt;
&lt;br /&gt;
== UndoRedoObjekt ==&lt;br /&gt;
&lt;br /&gt;
=== Methode Do ===&lt;br /&gt;
Führt den Befehl aus, speichert den alten Wert als Vorbereitung für undo()&lt;br /&gt;
&lt;br /&gt;
=== Methode Undo ===&lt;br /&gt;
Führt den Befehl aus,  speichert den alten Wert als Vorbereitung für do() (was in dem Fall ein redo ist)&lt;br /&gt;
&lt;br /&gt;
=== Methode tryAppendAndRun(UndoRedoObjekt* command) ===&lt;br /&gt;
wenn Typ übereinstimmt, state stimmt und das Kommandoobjekt darauf ausgelegt ist: Führe aktuelle Änderung mit der letzten Änderung zusammen. Beispiel: Ein String wird mehrere Male hintereinander geändert (z.B. jeder Buchstabe löst ein Änderungssignal aus). In dem Fall sollte nicht für jeden Buchstaben ein eigenes Kommandoobjekt erzeugt werden, das macht die Änderungen so unpraktisch...&lt;br /&gt;
&lt;br /&gt;
=== Member state ===&lt;br /&gt;
Hält die Information, ob das Objekt ausgeführt wurde oder rückgängig gemacht wurde&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design_Allgemein_Editoren]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=246</id>
		<title>Development:Design UndoRedo</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Design_UndoRedo&amp;diff=246"/>
		<updated>2015-12-08T11:25:35Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Kategorie:Design_Allgemein_Editoren“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Design_Allgemein_Editoren]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design_Allgemein&amp;diff=245</id>
		<title>Kategorie:Design Allgemein</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design_Allgemein&amp;diff=245"/>
		<updated>2015-12-08T11:24:48Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Kategorie:Design“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Design]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design_Allgemein_Editoren&amp;diff=244</id>
		<title>Kategorie:Design Allgemein Editoren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design_Allgemein_Editoren&amp;diff=244"/>
		<updated>2015-12-08T11:23:48Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Kategorie:Design_Allgemein“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Design_Allgemein]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=242</id>
		<title>Kategorie:Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=242"/>
		<updated>2015-12-08T11:21:27Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Überblick über alle Designfestlegungen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=241</id>
		<title>Kategorie:Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Design&amp;diff=241"/>
		<updated>2015-12-08T11:18:12Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Überblick über alle Designfestlegungen“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Überblick über alle Designfestlegungen&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Entwicklung&amp;diff=240</id>
		<title>Kategorie:Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Entwicklung&amp;diff=240"/>
		<updated>2015-12-08T11:17:40Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Einstiegsseite für alle Ezntwicklungsseiten“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einstiegsseite für alle Ezntwicklungsseiten&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Anforderungen&amp;diff=239</id>
		<title>Kategorie:Anforderungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Anforderungen&amp;diff=239"/>
		<updated>2015-12-08T11:17:05Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Kategorie enthält alle Seiten, die Anforderungen an das Programm beschreiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=235</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=235"/>
		<updated>2015-10-28T10:48:06Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Anforderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
* Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
* Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
= Datentypen =&lt;br /&gt;
* integer&lt;br /&gt;
* Gleitkomma&lt;br /&gt;
* String&lt;br /&gt;
* Bool?&lt;br /&gt;
* VHDL-inspirierter Datentyp? ( http://www.cs.sfu.ca/~ggbaker/reference/std_logic/1164/std_logic.html )&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden. TODO Effizienz beachten - sollte nicht jedes mal ein erneutes Parsen verlangen...&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
* Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
* Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
* TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
* Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
* Bereitstellung von Kennlinien? (Idee aus dem Soundthesizer)&lt;br /&gt;
* Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
* Anwendung überall, wo Daten eingehen&lt;br /&gt;
* Ersetzt die Eingangslogik&lt;br /&gt;
* Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
* Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
= Lose Gedankensammlung =&lt;br /&gt;
* \exists Zustand&lt;br /&gt;
** Input1: SimpleScript, in Abhängigket von:&lt;br /&gt;
*** Zustände&lt;br /&gt;
*** Automaten&lt;br /&gt;
*** Script-Interop-Automaten&lt;br /&gt;
*** Eingangs-Adern&lt;br /&gt;
** Wert: Der Wert, den das Simple-Script berechnet hat. (Wird immer automaisch aktualisiert)&lt;br /&gt;
* \exists Automat&lt;br /&gt;
** Input1: Startwert&lt;br /&gt;
** Input2...n: &lt;br /&gt;
*** Param1: Schnittstelle + Impulsname&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie ein SimpleScript, gibt jedoch ein bool zurück, kann zugreifen auf&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den Wert des Signals&lt;br /&gt;
*** Param3: Setzwert-Script: So ähnlich wie ein SimpleScript, gibt den int zurück, den der Automat am Ende haben soll. Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Wert: Den zuletzt gesetzten Wert&lt;br /&gt;
* \exists Eingangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Wert: Den Wert der Eingangs-Ader&lt;br /&gt;
* \exists Ausgangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Input2: Ein Automat oder Zustand, dessen Wert die Ausgangs-Ader immer haben soll.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Ausgangs-Impuls&lt;br /&gt;
** Input 1...n:&lt;br /&gt;
*** Params: Analog zum Impuls. - Oder -&lt;br /&gt;
** Input n...m:&lt;br /&gt;
*** Param1: Zustand oder Automat&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie SimpleScipt, ...&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den alten Wert des Zustandes&lt;br /&gt;
**** Den neuen Wert des Zustandes&lt;br /&gt;
*** Param3: Wert des Impuleses: So ähnl... Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Script-Interop-Automat (nur Relaisanlage)&lt;br /&gt;
** Hat neben dem Getter und dem Changed-Event (siehe unten) auch noch einen setter.&lt;br /&gt;
** Wert: Der Wert, der als letztes vom Code im Setter gesetzt wurde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was Werte hat, kann von einem Tischfeld abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
In der Relaisanlage haben alle Objekte mit Werten eine Changed(int old, int new)-Eigenschaft, zudem haben sie einen Getter.&lt;br /&gt;
&lt;br /&gt;
= Aktueller Diskussionsstand =&lt;br /&gt;
* Zustände := SimpleScripts in Abhängigkeit von (Zustände, die vorher in der Liste definiert wurden, siehe Punkt 2; Automaten)&lt;br /&gt;
** Welches Script: via AS auswählbar&lt;br /&gt;
** Verwendung von Zyklenverhinderung statt Zyklenerkennung, wo möglich.&lt;br /&gt;
* Automaten, die für die Verarbeitung von Ereignissen zuständig sind.&lt;br /&gt;
* Alle Werte in TischfeldGrafiken Scriptierbar, ob man sie später auch auslesen kann, ist noch zu diskutieren. Möglicherweise kann man diese zwei Punkte aber auch erst einmal verschieben, nur Konzeptionell muss es bedacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=234</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=234"/>
		<updated>2015-10-28T10:47:51Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Anforderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
* Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
* Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
= Datentypen&lt;br /&gt;
* integer&lt;br /&gt;
* Gleitkomma&lt;br /&gt;
* Bool?&lt;br /&gt;
* VHDL-inspirierter Datentyp? ( http://www.cs.sfu.ca/~ggbaker/reference/std_logic/1164/std_logic.html )&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden. TODO Effizienz beachten - sollte nicht jedes mal ein erneutes Parsen verlangen...&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
* Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
* Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
* TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
* Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
* Bereitstellung von Kennlinien? (Idee aus dem Soundthesizer)&lt;br /&gt;
* Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
* Anwendung überall, wo Daten eingehen&lt;br /&gt;
* Ersetzt die Eingangslogik&lt;br /&gt;
* Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
* Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
= Lose Gedankensammlung =&lt;br /&gt;
* \exists Zustand&lt;br /&gt;
** Input1: SimpleScript, in Abhängigket von:&lt;br /&gt;
*** Zustände&lt;br /&gt;
*** Automaten&lt;br /&gt;
*** Script-Interop-Automaten&lt;br /&gt;
*** Eingangs-Adern&lt;br /&gt;
** Wert: Der Wert, den das Simple-Script berechnet hat. (Wird immer automaisch aktualisiert)&lt;br /&gt;
* \exists Automat&lt;br /&gt;
** Input1: Startwert&lt;br /&gt;
** Input2...n: &lt;br /&gt;
*** Param1: Schnittstelle + Impulsname&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie ein SimpleScript, gibt jedoch ein bool zurück, kann zugreifen auf&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den Wert des Signals&lt;br /&gt;
*** Param3: Setzwert-Script: So ähnlich wie ein SimpleScript, gibt den int zurück, den der Automat am Ende haben soll. Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Wert: Den zuletzt gesetzten Wert&lt;br /&gt;
* \exists Eingangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Wert: Den Wert der Eingangs-Ader&lt;br /&gt;
* \exists Ausgangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Input2: Ein Automat oder Zustand, dessen Wert die Ausgangs-Ader immer haben soll.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Ausgangs-Impuls&lt;br /&gt;
** Input 1...n:&lt;br /&gt;
*** Params: Analog zum Impuls. - Oder -&lt;br /&gt;
** Input n...m:&lt;br /&gt;
*** Param1: Zustand oder Automat&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie SimpleScipt, ...&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den alten Wert des Zustandes&lt;br /&gt;
**** Den neuen Wert des Zustandes&lt;br /&gt;
*** Param3: Wert des Impuleses: So ähnl... Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Script-Interop-Automat (nur Relaisanlage)&lt;br /&gt;
** Hat neben dem Getter und dem Changed-Event (siehe unten) auch noch einen setter.&lt;br /&gt;
** Wert: Der Wert, der als letztes vom Code im Setter gesetzt wurde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was Werte hat, kann von einem Tischfeld abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
In der Relaisanlage haben alle Objekte mit Werten eine Changed(int old, int new)-Eigenschaft, zudem haben sie einen Getter.&lt;br /&gt;
&lt;br /&gt;
= Aktueller Diskussionsstand =&lt;br /&gt;
* Zustände := SimpleScripts in Abhängigkeit von (Zustände, die vorher in der Liste definiert wurden, siehe Punkt 2; Automaten)&lt;br /&gt;
** Welches Script: via AS auswählbar&lt;br /&gt;
** Verwendung von Zyklenverhinderung statt Zyklenerkennung, wo möglich.&lt;br /&gt;
* Automaten, die für die Verarbeitung von Ereignissen zuständig sind.&lt;br /&gt;
* Alle Werte in TischfeldGrafiken Scriptierbar, ob man sie später auch auslesen kann, ist noch zu diskutieren. Möglicherweise kann man diese zwei Punkte aber auch erst einmal verschieben, nur Konzeptionell muss es bedacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=229</id>
		<title>Development:Anforderungen Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=229"/>
		<updated>2015-10-27T13:09:39Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einstellbare Werte:&lt;br /&gt;
* Lautstärke&lt;br /&gt;
* Position (Pan oder Laufzeitunterschied). Soll Position auch innerhalb eines Stellwerk variiert werden können?&lt;br /&gt;
* Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwindigkeiten o.ä. genutzt)&lt;br /&gt;
* An/aus&lt;br /&gt;
* Loop, einzeln. Für einzelnes auslösen ggf. Wahl zwischen bei steigender Flanke, bei fallender Flanke, oder bei beiden Flanken (Idee aus Soundthesizer), aber das ist vermutlich schon durch die ebenen vorher abgedeckt?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verknüpfung von Sounds:&lt;br /&gt;
* Einleitung&lt;br /&gt;
* Mittelteil&lt;br /&gt;
* Ausleitung&lt;br /&gt;
* Ggf. setzen von Abbruchpunkten, d.h. Ende eines Sounds kann nicht an beliebiger Stelle erfolgen, sondern z.B. nur zwischen den einzelnen Schlägen eines langsam schlagenden Weckers, oder an geeigneten Verknüpfungspunkten zum Ausleitungssound?&lt;br /&gt;
&lt;br /&gt;
Implementierung:&lt;br /&gt;
* Verschiedenen Soundengines möglich (ggf. sogar per Plugin?) -&amp;gt; Basisklasse, von der die einzelnen Engines erben, welche genutzt wird ist konfigurierbar&lt;br /&gt;
* Umschaltung entweder nur mit Neustart oder auch zu Laufzeit?&lt;br /&gt;
* Soundengine benötigt eigenen Thread (wie gehabt)&lt;br /&gt;
* Klasse &amp;quot;Soundfile&amp;quot; legt einzelne Datei fest, Klasse &amp;quot;Sound&amp;quot; verknüpft mehrere Dateien nach Bedingungen (z.B. Einleitungssound, Mittelteilsound, Ausleitungssound)&lt;br /&gt;
* Erzeugung von Objekten der Klasse Soundfile (und ggf. weiterer Klassen) per Fabrikmethode der Soundengine zur Kapselung der Implementierungsdetails der jeweiligen Soundengine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=228</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=228"/>
		<updated>2015-10-27T13:03:04Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* SimpleScript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
* Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
* Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden. TODO Effizienz beachten - sollte nicht jedes mal ein erneutes Parsen verlangen...&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
* Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
* Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
* TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
* Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
* Bereitstellung von Kennlinien? (Idee aus dem Soundthesizer)&lt;br /&gt;
* Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
* Anwendung überall, wo Daten eingehen&lt;br /&gt;
* Ersetzt die Eingangslogik&lt;br /&gt;
* Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
* Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
= Lose Gedankensammlung =&lt;br /&gt;
* \exists Zustand&lt;br /&gt;
** Input1: SimpleScript, in Abhängigket von:&lt;br /&gt;
*** Zustände&lt;br /&gt;
*** Automaten&lt;br /&gt;
*** Script-Interop-Automaten&lt;br /&gt;
*** Eingangs-Adern&lt;br /&gt;
** Wert: Der Wert, den das Simple-Script berechnet hat. (Wird immer automaisch aktualisiert)&lt;br /&gt;
* \exists Automat&lt;br /&gt;
** Input1: Startwert&lt;br /&gt;
** Input2...n: &lt;br /&gt;
*** Param1: Schnittstelle + Impulsname&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie ein SimpleScript, gibt jedoch ein bool zurück, kann zugreifen auf&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den Wert des Signals&lt;br /&gt;
*** Param3: Setzwert-Script: So ähnlich wie ein SimpleScript, gibt den int zurück, den der Automat am Ende haben soll. Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Wert: Den zuletzt gesetzten Wert&lt;br /&gt;
* \exists Eingangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Wert: Den Wert der Eingangs-Ader&lt;br /&gt;
* \exists Ausgangs-Ader&lt;br /&gt;
** Input1: Schnittstelle + Adername&lt;br /&gt;
** Input2: Ein Automat oder Zustand, dessen Wert die Ausgangs-Ader immer haben soll.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Ausgangs-Impuls&lt;br /&gt;
** Input 1...n:&lt;br /&gt;
*** Params: Analog zum Impuls. - Oder -&lt;br /&gt;
** Input n...m:&lt;br /&gt;
*** Param1: Zustand oder Automat&lt;br /&gt;
*** Param2: Eingangsfilter: So ähnlich wie SimpleScipt, ...&lt;br /&gt;
**** Zustände&lt;br /&gt;
**** Automaten&lt;br /&gt;
**** Script-Interop-Automaten&lt;br /&gt;
**** Eingangs-Adern&lt;br /&gt;
**** Den alten Wert des Zustandes&lt;br /&gt;
**** Den neuen Wert des Zustandes&lt;br /&gt;
*** Param3: Wert des Impuleses: So ähnl... Zugriff auf Werte wie vorhergehend.&lt;br /&gt;
** Gibt keinen Wert zurück&lt;br /&gt;
* \exists Script-Interop-Automat (nur Relaisanlage)&lt;br /&gt;
** Hat neben dem Getter und dem Changed-Event (siehe unten) auch noch einen setter.&lt;br /&gt;
** Wert: Der Wert, der als letztes vom Code im Setter gesetzt wurde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was Werte hat, kann von einem Tischfeld abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
In der Relaisanlage haben alle Objekte mit Werten eine Changed(int old, int new)-Eigenschaft, zudem haben sie einen Getter.&lt;br /&gt;
&lt;br /&gt;
= Aktueller Diskussionsstand =&lt;br /&gt;
* Zustände := SimpleScripts in Abhängigkeit von (Zustände, die vorher in der Liste definiert wurden, siehe Punkt 2; Automaten)&lt;br /&gt;
** Welches Script: via AS auswählbar&lt;br /&gt;
** Verwendung von Zyklenverhinderung statt Zyklenerkennung, wo möglich.&lt;br /&gt;
* Automaten, die für die Verarbeitung von Ereignissen zuständig sind.&lt;br /&gt;
* Alle Werte in TischfeldGrafiken Scriptierbar, ob man sie später auch auslesen kann, ist noch zu diskutieren. Möglicherweise kann man diese zwei Punkte aber auch erst einmal verschieben, nur Konzeptionell muss es bedacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=227</id>
		<title>Development:Anforderungen Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=227"/>
		<updated>2015-10-27T13:02:17Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einstellbare Werte:&lt;br /&gt;
* Lautstärke&lt;br /&gt;
* Position (Pan oder Laufzeitunterschied)&lt;br /&gt;
* Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwindigkeiten o.ä. genutzt)&lt;br /&gt;
* An/aus&lt;br /&gt;
* Loop, einzeln&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verknüpfung von Sounds:&lt;br /&gt;
* Einleitung&lt;br /&gt;
* Mittelteil&lt;br /&gt;
* Ausleitung&lt;br /&gt;
* Ggf. setzen von Abbruchpunkten, d.h. Ende eines Sounds kann nicht an beliebiger Stelle erfolgen, sondern z.B. nur zwischen den einzelnen Schlägen eines langsam schlagenden Weckers, oder an geeigneten Verknüpfungspunkten zum Ausleitungssound?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=226</id>
		<title>Development:Anforderungen Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=226"/>
		<updated>2015-10-27T13:01:20Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einstellbare Werte:&lt;br /&gt;
[*] Lautstärke&lt;br /&gt;
&lt;br /&gt;
[*] Position (Pan oder Laufzeitunterschied)&lt;br /&gt;
&lt;br /&gt;
[*] Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwindigkeiten o.ä. genutzt)&lt;br /&gt;
&lt;br /&gt;
[*] An/aus&lt;br /&gt;
&lt;br /&gt;
[*] Loop, einzeln&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verknüpfung von Sounds:&lt;br /&gt;
[*] Einleitung&lt;br /&gt;
&lt;br /&gt;
[*] Mittelteil&lt;br /&gt;
&lt;br /&gt;
[*] Ausleitung&lt;br /&gt;
z&lt;br /&gt;
[*] Ggf. setzen von Abbruchpunkten, d.h. Ende eines Sounds kann nicht an beliebiger Stelle erfolgen, sondern z.B. nur zwischen den einzelnen Schlägen eines langsam schlagenden Weckers, oder an geeigneten Verknüpfungspunkten zum Ausleitungssound?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=225</id>
		<title>Development:Anforderungen Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Sound&amp;diff=225"/>
		<updated>2015-10-27T13:00:45Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Einstellbare Werte: [*] Lautstärke [*] Position (Pan oder Laufzeitunterschied) [*] Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwind…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einstellbare Werte:&lt;br /&gt;
[*] Lautstärke&lt;br /&gt;
[*] Position (Pan oder Laufzeitunterschied)&lt;br /&gt;
[*] Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwindigkeiten o.ä. genutzt)&lt;br /&gt;
[*] An/aus&lt;br /&gt;
[*] Loop, einzeln&lt;br /&gt;
&lt;br /&gt;
Verknüpfung von Sounds:&lt;br /&gt;
[*] Einleitung&lt;br /&gt;
[*] Mittelteil&lt;br /&gt;
[*] Ausleitung&lt;br /&gt;
[*] Ggf. setzen von Abbruchpunkten, d.h. Ende eines Sounds kann nicht an beliebiger Stelle erfolgen, sondern z.B. nur zwischen den einzelnen Schlägen eines langsam schlagenden Weckers, oder an geeigneten Verknüpfungspunkten zum Ausleitungssound?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=207</id>
		<title>Development:Anforderungen Global Schnittstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=207"/>
		<updated>2015-08-20T22:45:19Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Themengebiete&lt;br /&gt;
|-&lt;br /&gt;
| Für Performanceverbesserung: Vorbereitung darauf, intern zur Datenweitergabe (also &amp;quot;Addressierung&amp;quot;) Enums o.ä. statt den &amp;quot;Adernamen&amp;quot; zu verwenden, um teure Stringvergleiche zu vermeiden. Strings sollten nur bei der Abonnierung von eingehenden Daten o.ä. sowie bei der Netzwerkkommunikation verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
| Wert bei der Datenübertragung Schnittstelle sollte ein komplexer Datentyp werden, der schlank gestaltet sein muss (Performance), aber Platz für Erweiterungen bietet (Flags, Daten zum Blinken etc)&lt;br /&gt;
|-&lt;br /&gt;
| Fernsteuerung muss sich einklinken können in die Kommunikation zwischen Stelltisch und Relaisanlage &lt;br /&gt;
&lt;br /&gt;
Überlegung: Fernsteuerung ist &amp;quot;Men in the middle&amp;quot;, die erkennt, welche Daten zwischen Stelltisch und Relaisanlage ausgetauscht werden. Wenn alle Adern in den Leitungen schon vor der Datenübertragung festgelegt werden, kann man hier auch einen Editor platzieren, der z.B die Festlegung von Prioritäten bei der Datenübertragung o.ä. erlaubt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Zu überlegen =&lt;br /&gt;
* Kompatibilitätsprüfung beim Verbinden zweier Schnittstellen (Schnittstelle definiert Leitungen von Gegenstelle als optional oder verpflichtend, Typprüfung)&lt;br /&gt;
&lt;br /&gt;
= Beschlüsse =&lt;br /&gt;
* Leitungen sind typisiert (int, double, string). Ggf. werden auch structs benötigt (Blinken o.ä.). Zu prüfen: Soll Schnittstelle als template realisiert werden?&lt;br /&gt;
* Leitungen können zu einem Stecker zusammengefasst werden&lt;br /&gt;
* Leitungen zwischen zwei Schnittstellen können durchgeschaltet werden (ggf. auch skriptgesteuert aktivier/deaktivierbar, z.B. bei Weichen, die je nach Weichenlage in die eine oder andere Richtung durchschalten)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=206</id>
		<title>Development:Anforderungen Global Schnittstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=206"/>
		<updated>2015-08-20T22:40:18Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Themengebiete&lt;br /&gt;
|-&lt;br /&gt;
| Für Performanceverbesserung: Vorbereitung darauf, intern zur Datenweitergabe (also &amp;quot;Addressierung&amp;quot;) Enums o.ä. statt den &amp;quot;Adernamen&amp;quot; zu verwenden, um teure Stringvergleiche zu vermeiden. Strings sollten nur bei der Abonnierung von eingehenden Daten o.ä. sowie bei der Netzwerkkommunikation verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
| Wert bei der Datenübertragung Schnittstelle sollte ein komplexer Datentyp werden, der schlank gestaltet sein muss (Performance), aber Platz für Erweiterungen bietet (Flags, Daten zum Blinken etc)&lt;br /&gt;
|-&lt;br /&gt;
| Fernsteuerung muss sich einklinken können in die Kommunikation zwischen Stelltisch und Relaisanlage &lt;br /&gt;
&lt;br /&gt;
Überlegung: Fernsteuerung ist &amp;quot;Men in the middle&amp;quot;, die erkennt, welche Daten zwischen Stelltisch und Relaisanlage ausgetauscht werden. Wenn alle Adern in den Leitungen schon vor der Datenübertragung festgelegt werden, kann man hier auch einen Editor platzieren, der z.B die Festlegung von Prioritäten bei der Datenübertragung o.ä. erlaubt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Beschlüsse =&lt;br /&gt;
* Leitungen sind typisiert (int, double, string). Ggf. werden auch structs benötigt (Blinken o.ä.). Zu prüfen: Soll Schnittstelle als template realisiert werden?&lt;br /&gt;
* Leitungen können zu einem Stecker zusammengefasst werden&lt;br /&gt;
* Leitungen zwischen zwei Schnittstellen können durchgeschaltet werden (ggf. auch skriptgesteuert aktivier/deaktivierbar, z.B. bei Weichen, die je nach Weichenlage in die eine oder andere Richtung durchschalten)&lt;br /&gt;
* Kompatibilitätsprüfung beim Verbinden zweier Schnittstellen (Schnittstelle definiert Leitungen von Gegenstelle als optional oder verpflichtend, Typprüfung)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=205</id>
		<title>Development:Anforderungen Global Schnittstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=205"/>
		<updated>2015-08-20T21:23:14Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Themengebiete&lt;br /&gt;
|-&lt;br /&gt;
| Für Performanceverbesserung: Vorbereitung darauf, intern zur Datenweitergabe (also &amp;quot;Addressierung&amp;quot;) Enums o.ä. statt den &amp;quot;Adernamen&amp;quot; zu verwenden, um teure Stringvergleiche zu vermeiden. Strings sollten nur bei der Abonnierung von eingehenden Daten o.ä. sowie bei der Netzwerkkommunikation verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
| Wert bei der Datenübertragung Schnittstelle sollte ein komplexer Datentyp werden, der schlank gestaltet sein muss (Performance), aber Platz für Erweiterungen bietet (Flags, Daten zum Blinken etc)&lt;br /&gt;
|-&lt;br /&gt;
| Fernsteuerung muss sich einklinken können in die Kommunikation zwischen Stelltisch und Relaisanlage &lt;br /&gt;
&lt;br /&gt;
Überlegung: Fernsteuerung ist &amp;quot;Men in the middle&amp;quot;, die erkennt, welche Daten zwischen Stelltisch und Relaisanlage ausgetauscht werden. Wenn alle Adern in den Leitungen schon vor der Datenübertragung festgelegt werden, kann man hier auch einen Editor platzieren, der z.B die Festlegung von Prioritäten bei der Datenübertragung o.ä. erlaubt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Beschlüsse =&lt;br /&gt;
* Leitungen sind typisiert (int, double, string). Ggf. werden auch structs benötigt (Blinken o.ä.). Zu prüfen: Soll Schnittstelle als template realisiert werden?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=204</id>
		<title>Development:Anforderungen IDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=204"/>
		<updated>2015-08-15T14:35:34Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Grundüberlegungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundüberlegungen =&lt;br /&gt;
StellSi sollte eine gut bedienbare IDE enthalten, die das Entwickeln und Testen von Bauformen erleichtert. Dazu sollten folgende Anforderungen erfüllt werden:&lt;br /&gt;
* Integration des Bibliothekseditors in den Simulator&lt;br /&gt;
* Im laufenden Betrieb können Skripte neugeladen werden - automatisch oder manuell durch den Nutzer?&lt;br /&gt;
** Variante A: Relaisgruppe wird neu initialisiert&lt;br /&gt;
** Variante B: Inhalt der Membervariablen und anderer Relaisgruppenbezogenen Daten bleiben erhalten, sofern die Namen gleich bleiben. Kann schieflaufen, wenn Membervariablen o.ä. dazugekommen sind&lt;br /&gt;
* Integration eines Quelltexteditors mit automatischen Vervollständigen (Ja, ich weiß, dass das komplex ist)&lt;br /&gt;
* Einheitliche GUI in allen Teilen von StellSi&lt;br /&gt;
* Undo/Redo (-&amp;gt; Einsatz Befehlsobjekte?)&lt;br /&gt;
* Alle Änderungen wirken sich grundsätzlich sofort aus (-&amp;gt; keine Bestätigungsknöpfe). Ausnahmen ggf. bei Dialogen?&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
* Integration eines Debuggers:&lt;br /&gt;
** &amp;quot;Abhören&amp;quot; von Verbindungen zwischen Schnittstellen (u.a. Anzeige der Werte der Leitungen)&lt;br /&gt;
** Setzen von Breakpoints in Skripten&lt;br /&gt;
** Setzen von Breakpoints im SimpleScript&lt;br /&gt;
** Setzen von Breakpoints bei Schnittstellenaktivitäten&lt;br /&gt;
** &amp;quot;Unittest&amp;quot; von Relaisgruppen o.ä.: Einbau eines Schnittstellensimulators, mit dem die Schnittstellen einer Relaisgruppe, eines TischfeldElement o.ä. gezielt stimuliert werden können&lt;br /&gt;
** Automatisierung von Tests?&lt;br /&gt;
-&amp;gt; Debugger muss sich in Zukunft auf das ganze Objekt (TischfeldElement, Relaisgruppe) beziehen, nicht nur auf den Angelscript-Anteil!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= TODO-Liste =&lt;br /&gt;
* Entwicklung der GUI von StellSi:&lt;br /&gt;
** Basis: GUI für die Spieler&lt;br /&gt;
** Einschaltbar für Stellwerkserbauer (ein oder zwei Seitenleisten?):&lt;br /&gt;
*** Seitenleiste für neue Elemente (Tischfelder, Relaisgruppen o.ä.)&lt;br /&gt;
*** Seitenleiste für Property-Editierung (heutiger Parametereditor)&lt;br /&gt;
** Einschaltbar für Entwickler:&lt;br /&gt;
*** Quelltexteditor&lt;br /&gt;
*** Entwicklertools&lt;br /&gt;
*** Testtools&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=203</id>
		<title>Development:Anforderungen IDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=203"/>
		<updated>2015-08-15T13:03:25Z</updated>

		<summary type="html">&lt;p&gt;BorisM: /* Grundüberlegungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundüberlegungen =&lt;br /&gt;
StellSi sollte eine gut bedienbare IDE enthalten, die das Entwickeln und Testen von Bauformen erleichtert. Dazu sollten folgende Anforderungen erfüllt werden:&lt;br /&gt;
* Integration des Bibliothekseditors in den Simulator&lt;br /&gt;
* Im laufenden Betrieb können Skripte neugeladen werden - automatisch oder manuell durch den Nutzer?&lt;br /&gt;
** Variante A: Relaisgruppe wird neu initialisiert&lt;br /&gt;
** Variante B: Inhalt der Membervariablen und anderer Relaisgruppenbezogenen Daten bleiben erhalten, sofern die Namen gleich bleiben. Kann schieflaufen, wenn Membervariablen o.ä. dazugekommen sind&lt;br /&gt;
* Integration eines Quelltexteditors mit automatischen Vervollständigen (Ja, ich weiß, dass das komplex ist)&lt;br /&gt;
* Einheitliche GUI in allen Teilen von StellSi&lt;br /&gt;
* Undo/Redo (-&amp;gt; Einsatz Befehlsobjekte?)&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
* Integration eines Debuggers:&lt;br /&gt;
** &amp;quot;Abhören&amp;quot; von Verbindungen zwischen Schnittstellen (u.a. Anzeige der Werte der Leitungen)&lt;br /&gt;
** Setzen von Breakpoints in Skripten&lt;br /&gt;
** Setzen von Breakpoints im SimpleScript&lt;br /&gt;
** Setzen von Breakpoints bei Schnittstellenaktivitäten&lt;br /&gt;
** &amp;quot;Unittest&amp;quot; von Relaisgruppen o.ä.: Einbau eines Schnittstellensimulators, mit dem die Schnittstellen einer Relaisgruppe, eines TischfeldElement o.ä. gezielt stimuliert werden können&lt;br /&gt;
** Automatisierung von Tests?&lt;br /&gt;
-&amp;gt; Debugger muss sich in Zukunft auf das ganze Objekt (TischfeldElement, Relaisgruppe) beziehen, nicht nur auf den Angelscript-Anteil!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= TODO-Liste =&lt;br /&gt;
* Entwicklung der GUI von StellSi:&lt;br /&gt;
** Basis: GUI für die Spieler&lt;br /&gt;
** Einschaltbar für Stellwerkserbauer (ein oder zwei Seitenleisten?):&lt;br /&gt;
*** Seitenleiste für neue Elemente (Tischfelder, Relaisgruppen o.ä.)&lt;br /&gt;
*** Seitenleiste für Property-Editierung (heutiger Parametereditor)&lt;br /&gt;
** Einschaltbar für Entwickler:&lt;br /&gt;
*** Quelltexteditor&lt;br /&gt;
*** Entwicklertools&lt;br /&gt;
*** Testtools&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=202</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=202"/>
		<updated>2015-08-15T08:50:32Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
* Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
* Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden. TODO Effizienz beachten - sollte nicht jedes mal ein erneutes Parsen verlangen...&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
* Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
* Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
* TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
* Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
* Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
* Anwendung überall, wo Daten eingehen&lt;br /&gt;
* Ersetzt die Eingangslogik&lt;br /&gt;
* Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
* Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Kategorie:Umbauplanung_Boris&amp;diff=201</id>
		<title>Kategorie:Umbauplanung Boris</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Kategorie:Umbauplanung_Boris&amp;diff=201"/>
		<updated>2015-08-15T08:36:09Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „Sammlung von Änderungen, die von Boris geplant und zur Diskussion eingestellt werden.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sammlung von Änderungen, die von Boris geplant und zur Diskussion eingestellt werden.&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=200</id>
		<title>Development:Anforderungen IDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_IDE&amp;diff=200"/>
		<updated>2015-08-15T08:34:38Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „= Grundüberlegungen = StellSi sollte eine gut bedienbare IDE enthalten, die das Entwickeln und Testen von Bauformen erleichtert. Dazu sollten folgende Anforde…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundüberlegungen =&lt;br /&gt;
StellSi sollte eine gut bedienbare IDE enthalten, die das Entwickeln und Testen von Bauformen erleichtert. Dazu sollten folgende Anforderungen erfüllt werden:&lt;br /&gt;
* Integration des Bibliothekseditors in den Simulator&lt;br /&gt;
* Im laufenden Betrieb können Skripte neugeladen werden - automatisch oder manuell durch den Nutzer?&lt;br /&gt;
** Variante A: Relaisgruppe wird neu initialisiert&lt;br /&gt;
** Variante B: Inhalt der Membervariablen und anderer Relaisgruppenbezogenen Daten bleiben erhalten, sofern die Namen gleich bleiben. Kann schieflaufen, wenn Membervariablen o.ä. dazugekommen sind&lt;br /&gt;
* Integration eines Quelltexteditors mit automatischen Vervollständigen (Ja, ich weiß, dass das komplex ist)&lt;br /&gt;
* Einheitliche GUI in allen Teilen von StellSi&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
* Integration eines Debuggers:&lt;br /&gt;
** &amp;quot;Abhören&amp;quot; von Verbindungen zwischen Schnittstellen (u.a. Anzeige der Werte der Leitungen)&lt;br /&gt;
** Setzen von Breakpoints in Skripten&lt;br /&gt;
** Setzen von Breakpoints im SimpleScript&lt;br /&gt;
** Setzen von Breakpoints bei Schnittstellenaktivitäten&lt;br /&gt;
** &amp;quot;Unittest&amp;quot; von Relaisgruppen o.ä.: Einbau eines Schnittstellensimulators, mit dem die Schnittstellen einer Relaisgruppe, eines TischfeldElement o.ä. gezielt stimuliert werden können&lt;br /&gt;
** Automatisierung von Tests?&lt;br /&gt;
-&amp;gt; Debugger muss sich in Zukunft auf das ganze Objekt (TischfeldElement, Relaisgruppe) beziehen, nicht nur auf den Angelscript-Anteil!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= TODO-Liste =&lt;br /&gt;
* Entwicklung der GUI von StellSi:&lt;br /&gt;
** Basis: GUI für die Spieler&lt;br /&gt;
** Einschaltbar für Stellwerkserbauer (ein oder zwei Seitenleisten?):&lt;br /&gt;
*** Seitenleiste für neue Elemente (Tischfelder, Relaisgruppen o.ä.)&lt;br /&gt;
*** Seitenleiste für Property-Editierung (heutiger Parametereditor)&lt;br /&gt;
** Einschaltbar für Entwickler:&lt;br /&gt;
*** Quelltexteditor&lt;br /&gt;
*** Entwicklertools&lt;br /&gt;
*** Testtools&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Logging&amp;diff=199</id>
		<title>Development:Anforderungen Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Logging&amp;diff=199"/>
		<updated>2015-08-15T08:13:18Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „= Vorwort = Ich beschreibe hier einen Sollzustand zur Diskussion, ohne den Istzustand zu berücksichtigen. Dass ggf. das ein oder andere schon umgesetzt wurde…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorwort =&lt;br /&gt;
Ich beschreibe hier einen Sollzustand zur Diskussion, ohne den Istzustand zu berücksichtigen. Dass ggf. das ein oder andere schon umgesetzt wurde ist mir bewusst :-)&lt;br /&gt;
= Überlegungen =&lt;br /&gt;
* Realisierung als Singleton (Verfügbarkeit immer und überall auf geregelte Art)&lt;br /&gt;
* Trennung Model - View&lt;br /&gt;
* Realisierung unterschiedlicher Loggingstufen (Temporary, evtl. Debug_cyclic, Debug, Info, Warnung, Fehler, Fatal Error)&lt;br /&gt;
** Temporary-Logging ist für temporär während der Entwicklung gedacht, die anschließend nicht mehr benötigt werden, und muss in produktiven Versionen ausgebaut sein (Performance-Gründe, Vermeidung von Überfüllung des Loggings)&lt;br /&gt;
* Realisierung unterschiedlicher Loggingarten:&lt;br /&gt;
** Programmfehler&lt;br /&gt;
** stwb/Scripting-Fehler (gemeldet durch das PRogramm)&lt;br /&gt;
** Ausgaben durch Logging-Funktion im Script&lt;br /&gt;
* Implementierung eines Filters im View, der nach Loggingstufen und Loggingarten filtert. &lt;br /&gt;
* Standardmäßig werden Debug-Ausgaben im Model entweder nicht erfasst oder mengenmäßig limitiert (Performance). Das lässt sich umschalten.&lt;br /&gt;
&lt;br /&gt;
= Performance, Verhinderung von Logfluten =&lt;br /&gt;
Das Fluten des Logs muss vermieden werden. Zyklische Nachrichten dürfen nur mit Logstufe Temporary ausgegeben werden. &lt;br /&gt;
&lt;br /&gt;
Auf Debug-Level muss Loggen zyklischer Nachrichten wahrscheinlich weitgehend vermieden werden. Hier ist zu untersuchen, ob es eine Möglichkeit gibt, bei abgeschaltetem Debug-Logging das Erstellen des zu loggenden Strings zu verhindern. Ist die Abfrage, ob geloggt werden soll, erst in der Logging-Funktion selbst, dürfte zuerst das String-objekt erstellt, und dann erst entschieden werden, dass der String nicht genutzt wird. Das ist bisher allerdings eine Vermutung und noch nicht verifiziert.&lt;br /&gt;
&lt;br /&gt;
Sollte es möglich sein, das Erstellen des String-Objekts zu verhindern, kann über eine weitere Debug-Stufe (Debug_cyclic) nachgedacht werden.&lt;br /&gt;
&lt;br /&gt;
= Erfasste Daten =&lt;br /&gt;
Jede Lognachricht wird in einer eigenen Klasse erfasst. Dabei wird erfasst:&lt;br /&gt;
* Uhrzeit&lt;br /&gt;
* Logart&lt;br /&gt;
* Logstufe&lt;br /&gt;
* Lognachricht&lt;br /&gt;
* Ggf. Ort des Auftretens (z.B. Quelltextdatei/Zeile)&lt;br /&gt;
&lt;br /&gt;
Wichtig: Performance (Speicher, Rechenzeit) beachten!&lt;br /&gt;
&lt;br /&gt;
= Anbindung Views =&lt;br /&gt;
Beobachter-Pattern ist aus Performance-Grunden nicht geeignet. &lt;br /&gt;
&lt;br /&gt;
Der Logger bietet eine Möglichkeit für Views:&lt;br /&gt;
* Daten abzurufen (ggf. vorgefiltert)&lt;br /&gt;
* Daten zu abonnieren (ggf. mit Filter)&lt;br /&gt;
&lt;br /&gt;
Neu eintreffende Daten werden dann automatisch an die Views weitergegeben.&lt;br /&gt;
&lt;br /&gt;
= Views =&lt;br /&gt;
Benötigte Views:&lt;br /&gt;
* Weiterleitung auf Konsole&lt;br /&gt;
* Grafische filterbare Liste&lt;br /&gt;
* Export in eine Datei/Upload auf Server/Versand per E-Mail&lt;br /&gt;
&lt;br /&gt;
= Nett zu haben =&lt;br /&gt;
Schafft man es im Fall von Programmabstürzen Daten sowie das Log dazu zu sammeln? &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;br /&gt;
[[Kategorie:Umbauplanung_Boris]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=198</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=198"/>
		<updated>2015-08-13T02:55:16Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
* Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
* Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden. TODO Effizienz beachten - sollte nicht jedes mal ein erneutes Parsen verlangen...&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
* Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
* Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
* TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
* Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
* Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
* Anwendung überall, wo Daten eingehen&lt;br /&gt;
* Ersetzt die Eingangslogik&lt;br /&gt;
* Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
* Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=197</id>
		<title>Development:Überarbeitung Skripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:%C3%9Cberarbeitung_Skripting&amp;diff=197"/>
		<updated>2015-08-13T02:49:45Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „= Grundlagen = [*] Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript [*] Bessere V…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Grundlagen =&lt;br /&gt;
[*] Einführung eines zustandsbasierten Skriptsystems (im folgenden vorläufig SimpleScript genannt) als Ergänzung zu AngelScript&lt;br /&gt;
[*] Bessere Verknüpfung des zu steuernden Objekts (Relaisgruppe, Tischfeld, ...) mit dem Skripting&lt;br /&gt;
&lt;br /&gt;
= Anforderungen =&lt;br /&gt;
== AngelScript ==&lt;br /&gt;
=== Eingang von Daten von außen ===&lt;br /&gt;
Formulierung von SimpleScript-Ausdrücken in den Metadaten von Methoden. Ein Ausdruck pro Parameter. &lt;br /&gt;
Wenn sich das Ergebnis des Ausdrucks ändert, wird die Methode aufgerufen. Dies ersetzt die Auswertung des Methodennamen vollständig (bis auf Abwärtskompatibilität)&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Daten ===&lt;br /&gt;
Der AngelScript-Klasse wird eine automatische generierte Klasse zur Verfügung gestellt, über die ein Zugriff auf die Daten des gesteuerten Tischfeldes, Relaisgruppe, ... zur Verfügung gestellt wird. Vorbild ist die &amp;quot;ui&amp;quot;-Membervariable von mit QT Designer erstellten Widgets. &lt;br /&gt;
&lt;br /&gt;
Bei einem Tischfeld sind z.B. die Schnittstellen, aber auch die GUI-Elemente (Bitmap, SVG, Taster, ...) auf diese Weise erreichbar. Realisierbarkeit von Animationen bedenken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Einbindung von SimpleScript auch zur Ausgabe der Daten. Beispiel: Die Daten, die auf einer Schnittstelle, an der ein Tischfeld angeschlossen werden kann, ausgegeben werden sollen, sollen auch per SimpleScript generierbar sein aus den internen Daten der Relaisgruppe. &lt;br /&gt;
&lt;br /&gt;
Per AngelScript ist die Zuweisung von SimpleScript-Anweisungen an externe Elemente (z.B. eine Grafik) möglich. Damit kann z.B. in verschiedenen Phasen einer Animation die Berechnungsvorschrift für Position, Drehung o.ä. dynamisch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== SimpleScript ==&lt;br /&gt;
[*] Datenabruf von Leitungen einer SChnittstelle, reagiert auf Änderungen automatisch&lt;br /&gt;
[*] Analog dazu auch von Tastern, Zuständen (brauchen wir die noch??), ...&lt;br /&gt;
[*] TODO: Enthält geeignete Strukturen, um Relaisschaltungen zu simulieren&lt;br /&gt;
[*] Operatoren (+, -, &amp;amp;&amp;amp;, ||, ...)&lt;br /&gt;
[*] Bereitstellung von Funktionen inklusive return-Anweisung. TODO: Wo werden die Funktionen definiert? Müssen auch in stwb zur Verfügung stehen!&lt;br /&gt;
[*] Anwendung überall, wo Daten eingehen&lt;br /&gt;
[*] Ersetzt die Eingangslogik&lt;br /&gt;
[*] Bereitstellung eines grafischen Editors (als Alternative zur Texteingabe)&lt;br /&gt;
[*] Bereitstellung Syntaxprüfung/automatische Ergänzung bei Eingabe in Textfeldern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Realisierungsmöglichkeiten =&lt;br /&gt;
SimpleScript: Entwurfsmuster &amp;quot;Interpreter&amp;quot; oder http://www.antlr.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Datei:KontexmenueSchnittstelle.png&amp;diff=182</id>
		<title>Datei:KontexmenueSchnittstelle.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Datei:KontexmenueSchnittstelle.png&amp;diff=182"/>
		<updated>2015-04-30T22:17:14Z</updated>

		<summary type="html">&lt;p&gt;BorisM: BorisM lud eine neue Version von Datei:KontexmenueSchnittstelle.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quelle: Südwest&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Parametereditor&amp;diff=168</id>
		<title>Development:Anforderungen Parametereditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Parametereditor&amp;diff=168"/>
		<updated>2015-03-28T15:18:04Z</updated>

		<summary type="html">&lt;p&gt;BorisM: Die Seite wurde neu angelegt: „==Gui==   {| class=&amp;quot;wikitable sortable&amp;quot; ! Anforderung allgemein |- | Änderungen werden sofort ausgeführt bei der Durchführung der Änderung |- | Der Paramet…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Gui==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Anforderung allgemein&lt;br /&gt;
|-&lt;br /&gt;
| Änderungen werden sofort ausgeführt bei der Durchführung der Änderung&lt;br /&gt;
|-&lt;br /&gt;
| Der Parametereditor befindet sich in einer Seitenleiste analog zu diversen IDE&lt;br /&gt;
|-&lt;br /&gt;
| Die Auswahl von komplexen Einstellungen (z.B. Auswahl einer Schnittstelle auf die sich verbunden wird) erfolgt über eine Art Dropdown-Menü, analog zu einer Kombobox, aber mit eigenen Widgets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Anforderung Schnittstellenwahl&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:KontexmenueSchnittstelle.png|miniatur|left]]Vorschlag von Südwest&lt;br /&gt;
|- &lt;br /&gt;
| Ggf. mehr Filter nötig (Grobfilter + Feinfilter o.ä.)&lt;br /&gt;
|- &lt;br /&gt;
| Reiter - nicht eher sinnvoller oben?&lt;br /&gt;
|-&lt;br /&gt;
| Reiter: Problematisch bei mehr als (eigene Relaisanlage + 1 Außenanlage + 3 verknüpfte Relaisanlagen), dann wird Bedienung ziemlich eklig&lt;br /&gt;
|-&lt;br /&gt;
| Reiter: Benötigen Kurzbezeichnung von Relaisanlage/Außenanlage, die sinnvoll gewählt sein muss&lt;br /&gt;
|}&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
	<entry>
		<id>https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=144</id>
		<title>Development:Anforderungen Global Schnittstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stellsi.de/index.php?title=Development:Anforderungen_Global_Schnittstellen&amp;diff=144"/>
		<updated>2015-01-12T23:25:54Z</updated>

		<summary type="html">&lt;p&gt;BorisM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Themengebiete&lt;br /&gt;
|-&lt;br /&gt;
| Für Performanceverbesserung: Vorbereitung darauf, intern zur Datenweitergabe (also &amp;quot;Addressierung&amp;quot;) Enums o.ä. statt den &amp;quot;Adernamen&amp;quot; zu verwenden, um teure Stringvergleiche zu vermeiden. Strings sollten nur bei der Abonnierung von eingehenden Daten o.ä. sowie bei der Netzwerkkommunikation verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
| Wert bei der Datenübertragung Schnittstelle sollte ein komplexer Datentyp werden, der schlank gestaltet sein muss (Performance), aber Platz für Erweiterungen bietet (Flags, Daten zum Blinken etc)&lt;br /&gt;
|-&lt;br /&gt;
| Fernsteuerung muss sich einklinken können in die Kommunikation zwischen Stelltisch und Relaisanlage Überlegung: Fernsteuerung ist &amp;quot;Men in the middle&amp;quot;, die erkennt, welche Daten zwischen Stelltisch und Relaisanlage ausgetauscht werden. Wenn alle Adern in den Leitungen schon vor der Datenübertragung festgelegt werden, kann man hier auch einen Editor platzieren, der z.B die Festlegung von Prioritäten ebi der Datenübertragung o.ä. erlaubt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anforderungen]]&lt;/div&gt;</summary>
		<author><name>BorisM</name></author>
	</entry>
</feed>