<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>http://www.der-moba.de/index.php?action=history&amp;feed=atom&amp;title=SRCP_0.5.0_%28plain_text%29</id>
		<title>SRCP 0.5.0 (plain text) - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="http://www.der-moba.de/index.php?action=history&amp;feed=atom&amp;title=SRCP_0.5.0_%28plain_text%29"/>
		<link rel="alternate" type="text/html" href="http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;action=history"/>
		<updated>2026-04-29T18:10:55Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in DerMoba</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10421&amp;oldid=prev</id>
		<title>Werner Falkenbach: Leerzeichen oder Fata Morgana?</title>
		<link rel="alternate" type="text/html" href="http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10421&amp;oldid=prev"/>
				<updated>2006-01-17T10:57:23Z</updated>
		
		<summary type="html">&lt;p&gt;Leerzeichen oder Fata Morgana?&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 17. Januar 2006, 10:57 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  SRCP - Simple Railroad Command Protocol&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  SRCP - Simple Railroad Command Protocol&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  Version 0.5.0&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  Version 0.5.0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Torsten Vogt, Martin Ostermann, Kurt Haders, &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Torsten Vogt, Martin Ostermann, Kurt Haders, &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Olaf Schlachter, Matthias Trute, Tobias Schlottke&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Olaf Schlachter, Matthias Trute, Tobias Schlottke&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Edbert van Eimeren&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Edbert van Eimeren&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  1. Einleitung&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  1. Einleitung&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Werner Falkenbach</name></author>	</entry>

	<entry>
		<id>http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10420&amp;oldid=prev</id>
		<title>Werner Falkenbach: Leerzeichen</title>
		<link rel="alternate" type="text/html" href="http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10420&amp;oldid=prev"/>
				<updated>2006-01-17T10:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Leerzeichen&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 17. Januar 2006, 10:56 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  SRCP - Simple Railroad Command Protocol&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  SRCP - Simple Railroad Command Protocol&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  Version 0.5.0&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  Version 0.5.0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Torsten Vogt, Martin Ostermann, Kurt Haders, &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Torsten Vogt, Martin Ostermann, Kurt Haders, &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Olaf Schlachter, Matthias Trute, Tobias Schlottke&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Olaf Schlachter, Matthias Trute, Tobias Schlottke&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Edbert van Eimeren&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; Edbert van Eimeren&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  1. Einleitung&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  1. Einleitung&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Werner Falkenbach</name></author>	</entry>

	<entry>
		<id>http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10419&amp;oldid=prev</id>
		<title>Werner Falkenbach: kat</title>
		<link rel="alternate" type="text/html" href="http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10419&amp;oldid=prev"/>
				<updated>2006-01-17T10:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;kat&lt;/p&gt;
&lt;a href=&quot;http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;amp;diff=10419&amp;amp;oldid=10418&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Werner Falkenbach</name></author>	</entry>

	<entry>
		<id>http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10418&amp;oldid=prev</id>
		<title>Werner Falkenbach: neu</title>
		<link rel="alternate" type="text/html" href="http://www.der-moba.de/index.php?title=SRCP_0.5.0_(plain_text)&amp;diff=10418&amp;oldid=prev"/>
				<updated>2006-01-17T10:52:33Z</updated>
		
		<summary type="html">&lt;p&gt;neu&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;                SRCP - Simple Railroad Command Protocol&lt;br /&gt;
                            Version 0.5.0&lt;br /&gt;
&lt;br /&gt;
               Torsten Vogt, Martin Ostermann, Kurt Haders, &lt;br /&gt;
             Olaf Schlachter, Matthias Trute, Tobias Schlottke&lt;br /&gt;
                           Edbert van Eimeren&lt;br /&gt;
&lt;br /&gt;
  1. Einleitung&lt;br /&gt;
&lt;br /&gt;
  Das SRCP beschreibt einen Befehlssatz zur Client-Server-Kommunikation&lt;br /&gt;
  zwischen Serverprozessen zur Steuerung von digitalen Modelleisenbahnen&lt;br /&gt;
  und deren Clients. Serverprozesse sind entweder Software-Signalgeneratoren&lt;br /&gt;
  oder Treiber für HW-Interfaces. Clients sind typischerweise &lt;br /&gt;
  Steuerungsprogramme.&lt;br /&gt;
&lt;br /&gt;
  Der SRCP-Befehlssatz besteht aus Kommandos, die direkt das Verhalten&lt;br /&gt;
  des Servers betreffen und aus Kommandos, die für die Dekoder der &lt;br /&gt;
  Modellbahnanlage bestimmt sind. Weiterhin werden Kommandos, die die&lt;br /&gt;
  Verarbeitung von Rückmeldungen betreffen spezifiziert.&lt;br /&gt;
&lt;br /&gt;
  1.1 Konventionen&lt;br /&gt;
&lt;br /&gt;
  Die Übertragung der Kommandos von den Clients zum Server erfolgt via&lt;br /&gt;
  tcp/ip. Alle Kommandos werden mit dem Zeichen '\n' (line feed (LF),&lt;br /&gt;
  #10) abgeschlossen. Ein vorangestelltes '\r' (carriage return (CR),&lt;br /&gt;
  #13) wird akzeptiert. Jedes Kommando besteht aus Worten, die durch&lt;br /&gt;
  Whitespace (Leerzeichen, Tabulatoren) getrennt sind. &lt;br /&gt;
&lt;br /&gt;
  Die Worte der Kommandos können aus der Menge der Zeichen &lt;br /&gt;
  { '0', .., '9', '-', 'A', .., 'Z', 'a', .., 'z' } gebildet werden. &lt;br /&gt;
  Der Server wertet die Kommandos case-sensitive aus, d.h. zwischen&lt;br /&gt;
  Groß- und Kleinbuchstaben wird unterschieden.&lt;br /&gt;
&lt;br /&gt;
  Kommandos, die unvollständig oder offensichtlich falsch sind werden&lt;br /&gt;
  vom Server ignoriert.   &lt;br /&gt;
&lt;br /&gt;
  1.2 Übertragungskanäle&lt;br /&gt;
&lt;br /&gt;
  Ein SRCP-konformer Server stellt den Clients drei Ports zur Verfügung.&lt;br /&gt;
  &lt;br /&gt;
      1. Kommandoport&lt;br /&gt;
      2. Rückmeldepollport&lt;br /&gt;
      3. Informationsport&lt;br /&gt;
&lt;br /&gt;
  Der Kommandoport dient den Clients dazu, dem Server Kommandos&lt;br /&gt;
  übermitteln. Der Server versucht die Kommandos auszuführen. Bei&lt;br /&gt;
  manchen Kommandos erwartet der Client eine Antwort. Die Antwort des&lt;br /&gt;
  Servers wird ebenfalls über den Kommandoport abgewickelt. &lt;br /&gt;
 &lt;br /&gt;
  Der Rückmeldepollport wird nur unidirektional vom Server zum Client benutzt.&lt;br /&gt;
  Meldet sich ein Client am Rückmeldepollport an, so sendet der Server&lt;br /&gt;
  jede Statusänderung einer Rückmeldeeinheit an den Client zurück. Mit&lt;br /&gt;
  diesem Mechanismus ist es möglich, Rückmeldungen beim Client&lt;br /&gt;
  ereignisgesteuert zu bearbeiten.&lt;br /&gt;
 &lt;br /&gt;
  Auch der Informationsport wird nur unidirektional von Server zu den&lt;br /&gt;
  Clients benutzt. Er ist eine Art Broadcast-Kanal, der ständig vom Server&lt;br /&gt;
  mit Statusänderungen von Lokdekodern und Schaltdekodern gefüttert&lt;br /&gt;
  wird. Er dient dem asynchronen Abgleich mehrerer Clients am selben&lt;br /&gt;
  Server.&lt;br /&gt;
&lt;br /&gt;
  Der Server bestimmt die Portnummern. Standardportnummer für den&lt;br /&gt;
  Kommandoport sollte 12345 sein. Der Rückmeldepollport und der&lt;br /&gt;
  Informationsport sollten die beiden unmittelbar folgenden &lt;br /&gt;
  Portnummern sein. Standardmässig ergeben sich somit folgende&lt;br /&gt;
  Portnummern:&lt;br /&gt;
&lt;br /&gt;
     Kommandoport     : 12345&lt;br /&gt;
     Rückmeldepollport: 12346&lt;br /&gt;
     Informationsport : 12347&lt;br /&gt;
&lt;br /&gt;
  Nimmt ein Client zum Kommandoport Kontakt auf und wird vom Server&lt;br /&gt;
  akzeptiert, muß der Server zunächst einen einzeiligen Informationstext &lt;br /&gt;
  über diesen Port zum Client schicken. Dieser Text sollte den Namen des &lt;br /&gt;
  Servers, dessen Versionsnummer und die implementierte SRCP-Version&lt;br /&gt;
  enthalten.  &lt;br /&gt;
&lt;br /&gt;
  Beispiel:    erddcd v0.9.511; SRCP 0.5.0&lt;br /&gt;
&lt;br /&gt;
  Anschliesend wartet der Server auf Kommandos des Client. Der Client&lt;br /&gt;
  muß den Informationstext lesen und kann nun seinerseits Kommandos&lt;br /&gt;
  an den Server schicken.&lt;br /&gt;
&lt;br /&gt;
                             &lt;br /&gt;
  2. Kommandos zur Serversteuerung:&lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: entfällt&lt;br /&gt;
&lt;br /&gt;
  Kommandos:&lt;br /&gt;
&lt;br /&gt;
  SHUTDOWN    : Der Server beendet sich&lt;br /&gt;
  LOGOUT      : Dem Server wird angzeigt, dass sich ein Client ausloggt&lt;br /&gt;
  STARTVOLTAGE: Der Server schaltet den Digitalstrom am Booster ein&lt;br /&gt;
  STOPVOLTAGE : Der Server schaltet den Digitalstrom am Booster aus&lt;br /&gt;
  RESET       : Der Server re-initialisiert sich&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  3. Kommandos zur Digitalsteuerung&lt;br /&gt;
&lt;br /&gt;
  3.1 Befehle und Gerätegruppen&lt;br /&gt;
&lt;br /&gt;
  SRCP definiert 4 generelle Befehle:&lt;br /&gt;
&lt;br /&gt;
     SET      : Setzt einen Wert vom Client über den Server zum Gerät.&lt;br /&gt;
&lt;br /&gt;
     GET      : Ermittelt den aktuellen Zustand eines Gerätes.&lt;br /&gt;
&lt;br /&gt;
     WAIT     : Wartet, bis ein Gerät einen bestimmten Zustand erreicht hat.&lt;br /&gt;
&lt;br /&gt;
     INIT     : Falls Geräte explizit initialisiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
  Geräte entstammen den Gerätegruppen Lokdekoder, Schaltdekoder und &lt;br /&gt;
  Rückmeldeeinheiten.&lt;br /&gt;
&lt;br /&gt;
  Über Parameter wird festgelegt, auf welche Gerätegruppe sich ein Befehl&lt;br /&gt;
  bezieht. Der erste Parameter legt immer die Gerätegruppe fest:&lt;br /&gt;
&lt;br /&gt;
     GL: Lok- und Funktionsdekoder (generic loco)&lt;br /&gt;
     GA: Schaltdekoder (generic accessory)&lt;br /&gt;
     FB: Rückmeldeeinheit (feedback)&lt;br /&gt;
&lt;br /&gt;
  Anwendbarkeit der Befehle auf Gerätegruppen:&lt;br /&gt;
&lt;br /&gt;
        |  SET  GET  WAIT  INIT&lt;br /&gt;
     ---+----------------------&lt;br /&gt;
        |&lt;br /&gt;
     GL |   x    x    -     -  &lt;br /&gt;
        |&lt;br /&gt;
     GA |   x    x    -     -&lt;br /&gt;
        |&lt;br /&gt;
     FB |   -    x    x     x&lt;br /&gt;
        |&lt;br /&gt;
&lt;br /&gt;
  Bei einigen Befehlen (GET, WAIT) erwartet der Client vom Server eine&lt;br /&gt;
  Antwort. Es kann nun vorkommen, daß der Server zur gestellten Anfrage&lt;br /&gt;
  keine Antwort geben kann. In diesen Fällen muß der Server eine &lt;br /&gt;
  Zeichenkette zum Client senden, die folgendem Format genügt:&lt;br /&gt;
&lt;br /&gt;
  INFO &amp;lt;error code&amp;gt; \n&lt;br /&gt;
&lt;br /&gt;
  Als 'error code' muß eine negative Zahl übergeben werden. Folgende &lt;br /&gt;
  Konventionen gelten:&lt;br /&gt;
&lt;br /&gt;
  INFO -1    ==&amp;gt; Befehl wird nicht unterstützt       (not supported)&lt;br /&gt;
  INFO -2    ==&amp;gt; Keine Information vorhanden         (no data)&lt;br /&gt;
  INFO -3    ==&amp;gt; Zeitlimit überschritten (vgl. WAIT) (timeout)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  3.2 Weitere Befehlsparameter &lt;br /&gt;
&lt;br /&gt;
  Die weiteren Befehlsparameter legen genau fest, welches konkrete Gerät&lt;br /&gt;
  und welche Eigenschaften beeinflußt oder abgefragt werden sollen.&lt;br /&gt;
&lt;br /&gt;
  3.2.1 Befehlsparameter des Befehls SET&lt;br /&gt;
&lt;br /&gt;
  3.2.1.1 Gerätegruppe GL&lt;br /&gt;
&lt;br /&gt;
  SET GL &amp;lt;protocol&amp;gt; &amp;lt;addr&amp;gt; &amp;lt;direction&amp;gt; &amp;lt;V&amp;gt; &amp;lt;V_max&amp;gt; &amp;lt;func&amp;gt; &amp;lt;nro_f&amp;gt; &amp;lt;f1&amp;gt; .. &amp;lt;fn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'&lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: entfällt&lt;br /&gt;
&lt;br /&gt;
  Bedeutung der Argumente:&lt;br /&gt;
&lt;br /&gt;
     protocol : M1, M2, M3, M4, MF, NB, N1, N2, N3, N4, PS&lt;br /&gt;
               &lt;br /&gt;
                M1: Märklin alt  (rel. FRU, 80 Adr., 1 Funkt., 14 FS)&lt;br /&gt;
                M2: Märklin neu  (abs. FRU, 80 Adr., 5 Funkt., 14 FS)&lt;br /&gt;
                M3: M2 erweitert (abs. FRU, 256 Adr., 5 Funkt., 28 FS)&lt;br /&gt;
                M4: M2 erweitert (abs. FRU, 256 Adr., 5 Funkt., 14 FS)&lt;br /&gt;
                MF: altes Märklin Format für Funktionsdekoder&lt;br /&gt;
                NB: NMRA-DCC Basisprotokoll (abs. FRU, 7-bit-Adr., 14 FS)&lt;br /&gt;
                N1: NMRA-DCC erweitert (abs. FRU, 7-bit-Adr., 5 Funkt., 28 FS)&lt;br /&gt;
                N2: NMRA-DCC erweitert (abs. FRU, 7-bit-Adr., 5 Funkt., 128 FS)&lt;br /&gt;
                N3: NMRA-DCC erweitert (abs. FRU, 14-bit-Adr., 5 Funkt., 28 FS)&lt;br /&gt;
                N4: NMRA-DCC erweitert (abs. FRU, 14-bit-Adr., 5 Funkt., 128 FS)&lt;br /&gt;
                PS: protocol by server, der Server bestimmt den Protokolltyp &lt;br /&gt;
&lt;br /&gt;
     addr     : 0 .. 9999&lt;br /&gt;
     direction: 0 (= rückwärts), 1 (= vorwärts), 2 (= Nothalt)&lt;br /&gt;
     V        : 0 .. V_max ((virtuelle) Geschwindigkeit)&lt;br /&gt;
     V_max    : 0 .. 999   (maximale (virtuelle) Geschwindigkeit)&lt;br /&gt;
                V_max=0 ==&amp;gt; virtuelle Fahrstufe = reale Fahrstufe&lt;br /&gt;
     func     : 0 (= aus), 1 (= an)&lt;br /&gt;
     nro_f    : 0 .. x  (Anzahl der Zusatzfunktionen (number of functions))&lt;br /&gt;
     f1 .. fn : 0 (= aus), 1 (= an) &lt;br /&gt;
&lt;br /&gt;
  Beispiel: SET GL N2 1 1 50 250 1 4 0 1 0 0&lt;br /&gt;
&lt;br /&gt;
  Umrechnung der virtuellen Geschwindigkeit in echte Fahrstufen:&lt;br /&gt;
&lt;br /&gt;
     gegeben: DEC_fs (Anzahl der realen Dekoderfahrstufen, implizit bekannt)&lt;br /&gt;
              V      (virtuelle Geschwindigkeit, Argument)&lt;br /&gt;
              V_max  (maximale virtuelle Geschwindigkeit, Argument)&lt;br /&gt;
&lt;br /&gt;
     gesucht: V_fs   (reale Fahrstufe, die der virtuellen Geschw. entspricht)&lt;br /&gt;
&lt;br /&gt;
     Algorithmus: V_fs = round((V * DEC_fs)/V_max) &lt;br /&gt;
&lt;br /&gt;
     Hinweise für Entwickler von SRCP-konformen Servern:&lt;br /&gt;
              &lt;br /&gt;
               Es ist darauf zu achten, daß wirklich nur dann die reale&lt;br /&gt;
               Fahrstufe 0 (Stillstand) errechnet wird, wenn das Argument&lt;br /&gt;
               V gleich Null ist. Die Funktion 'round' ist deshalb &lt;br /&gt;
               hinreichend intelligent zu implementieren. &lt;br /&gt;
&lt;br /&gt;
               V_fs darf nur als Geschwindigkeitsangabe interpretiert&lt;br /&gt;
               werden. Manche Dekoder reagieren z.B. bei Fahrstufe 1&lt;br /&gt;
               mit einem Nothalt, andere mit einem Richtungswechsel,&lt;br /&gt;
               wieder andere mit einer Selbstzerstörungssequenz ;-).&lt;br /&gt;
               Sollen solche Dekoder unterstützt werden, dann hat &lt;br /&gt;
               der Server dafür zu sorgen, daß V_fs entsprechend angepaßt&lt;br /&gt;
               wird, bevor das Kommando an den Dekoder gesendet wird.&lt;br /&gt;
               Aus Sicht der Clients müssen die Fahrstufen sukzessive&lt;br /&gt;
               von 0 bis zur maximalen Fahrstufenanzahl durchnummeriert&lt;br /&gt;
               sein.&lt;br /&gt;
&lt;br /&gt;
               Wird V_max auf 0 gesetzt, dann darf keine Umrechnung der&lt;br /&gt;
               Fahrstufe vorgenommen werden. D.h. die mit V übermittelte&lt;br /&gt;
               Fahrstufe ist direkt an die Dekoder weiterzusenden. Dies&lt;br /&gt;
               erlaubt Clients den direkten Zugriff auf die Dekoder.&lt;br /&gt;
&lt;br /&gt;
               Sendet der Client den Protokolltyp PS (protocol by server),&lt;br /&gt;
               dann muß der Server entscheiden, welches Protokoll er für&lt;br /&gt;
               die übermittelte Adresse wählt. Die anderen Protokolltypen&lt;br /&gt;
               stellen für den Server natürlich auch nur Empfehlungen des&lt;br /&gt;
               Clients dar. Der Server hat immer die Freiheit, einer Adresse&lt;br /&gt;
               ein anderes, geeigneteres Protokoll zuzuweisen.&lt;br /&gt;
&lt;br /&gt;
     Beispiele: (50*28)/250 = 5.7   ==&amp;gt; V_fs = 6&lt;br /&gt;
                (4*28)/250  = 0.448 ==&amp;gt; V_fs = 1 (!!!)&lt;br /&gt;
                (0*28)/250  = 0     ==&amp;gt; V_fs = 0&lt;br /&gt;
&lt;br /&gt;
  3.2.1.2 Gerätegruppe GA&lt;br /&gt;
&lt;br /&gt;
  SET GA &amp;lt;protocol&amp;gt; &amp;lt;acc_nr&amp;gt; &amp;lt;acc_port&amp;gt; &amp;lt;action&amp;gt; &amp;lt;delay&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'&lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: entfällt&lt;br /&gt;
&lt;br /&gt;
  Bedeutung der Argumente:&lt;br /&gt;
&lt;br /&gt;
     protocol: M, N&lt;br /&gt;
&lt;br /&gt;
               M: Märklin/Motorola-Format&lt;br /&gt;
               N: NMRA-DCC-Format&lt;br /&gt;
&lt;br /&gt;
     acc_nr  : 1 .. 4096    (Nummer der Weiche/des Signals)&lt;br /&gt;
     acc_port: 0, 1         (Ausgang des Dekoders)&lt;br /&gt;
     action  : 0, 1         (0 = deaktiviert, 1 = aktiviert) &lt;br /&gt;
     delay   : Wert in Millisekunden (1000stel-Sekunden). Gibt an,&lt;br /&gt;
               nach welcher Zeit der Daemon einen aktivierten Ausgang&lt;br /&gt;
               automatisch deaktivieren soll. Wird '-1' als delay übergeben,&lt;br /&gt;
               dann wird der Ausgang nicht automatisch deaktiviert. Ist&lt;br /&gt;
               action=0 (Deaktivierung) wird delay ignoriert, muß aber&lt;br /&gt;
               angegeben werden (sinnvoller Wert: '-1').&lt;br /&gt;
&lt;br /&gt;
  Belegung der Dekoderausgänge:&lt;br /&gt;
&lt;br /&gt;
     0 = Weiche abbiegen, Signal Hp0, ...&lt;br /&gt;
     1 = Weiche gerade,   Signal Hp1, ...&lt;br /&gt;
&lt;br /&gt;
  Beispiel: SET GA M 0023 1 1 20&lt;br /&gt;
&lt;br /&gt;
  3.2.1.3 Servicemode&lt;br /&gt;
&lt;br /&gt;
  Es gibt Dekoder, die auf einem Programmiergleis oder 'on-track' &lt;br /&gt;
  programmierbar sind. Diese Dekoder erlauben die Änderung von&lt;br /&gt;
  'Speicherzellen' (Register, CV (configuration variable), Bit).&lt;br /&gt;
  Diese Dekoder können auch von SRCP-Servern unterstützt werden.&lt;br /&gt;
  Dazu dienen die folgenden Befehle.&lt;br /&gt;
&lt;br /&gt;
  SET GL SM &amp;lt;protocol&amp;gt; &amp;lt;dest-type&amp;gt; &amp;lt;dest-addr&amp;gt; [bitnr] &amp;lt;value&amp;gt;&lt;br /&gt;
  SET GA SM &amp;lt;protocol&amp;gt; &amp;lt;dest-type&amp;gt; &amp;lt;dest-addr&amp;gt; [bitnr] &amp;lt;value&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'&lt;br /&gt;
 &lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: entfällt&lt;br /&gt;
 &lt;br /&gt;
  Bedeutung der Argumente:&lt;br /&gt;
 &lt;br /&gt;
     protocol : NMRA, ...&lt;br /&gt;
     dest-type: Art der zu ändernden Dekoderspeicherzelle (destination type)&lt;br /&gt;
&lt;br /&gt;
                CV   : NMRA-DCC configuration variable&lt;br /&gt;
                CVBIT: ein Bit einer NMRA-DCC configuration variable&lt;br /&gt;
                REG  : Ein Register eines NMRA-DCC-Dekoders&lt;br /&gt;
&lt;br /&gt;
     dest-addr: Adresse der Speicherzelle, die geändert werden soll&lt;br /&gt;
     bitnr    : nur in Verbindung mit CVBIT sinnvoll&lt;br /&gt;
     value    : neuer Wert der Speicherzelle&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  3.2.1.4 sonstiges&lt;br /&gt;
 &lt;br /&gt;
  Hier könnte man spezielle Kommandos für Spezialdekoder (z.B.&lt;br /&gt;
  für Drehscheiben) spezifizieren.  &lt;br /&gt;
&lt;br /&gt;
  3.2.2 Befehlsparameter des Befehls GET&lt;br /&gt;
&lt;br /&gt;
  3.2.2.1 Gerätegruppe GL&lt;br /&gt;
&lt;br /&gt;
  GET GL &amp;lt;protocol&amp;gt; &amp;lt;addr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'&lt;br /&gt;
  &lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: Kommandoport&lt;br /&gt;
&lt;br /&gt;
  Bedeutung der Argumente: siehe 3.2.1.1&lt;br /&gt;
&lt;br /&gt;
  Der Server sendet an den Client alle verfügbare Info zu dem mit&lt;br /&gt;
  &amp;lt;protocol&amp;gt; und &amp;lt;addr&amp;gt; spezifizierten Lok- oder Funktionsdekoder.&lt;br /&gt;
  Diese Info muß wie folgt formatiert werden:&lt;br /&gt;
&lt;br /&gt;
  INFO GL &amp;lt;protocol&amp;gt; &amp;lt;addr&amp;gt; &amp;lt;direction&amp;gt; &amp;lt;V&amp;gt; &amp;lt;V_max&amp;gt; &amp;lt;func&amp;gt; &amp;lt;nro_f&amp;gt; &amp;lt;f1&amp;gt; .. &amp;lt;fn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  (vgl. 3.2.1.1)&lt;br /&gt;
&lt;br /&gt;
  Sollte keine Information vorhanden sein, oder der Server den Befehl&lt;br /&gt;
  GET nicht unterstützen, dann muß der Server 'INFO &amp;lt;error code&amp;gt;' an den &lt;br /&gt;
  Client senden (vgl. 3.1).&lt;br /&gt;
 &lt;br /&gt;
  3.2.2.2 Gerätegruppe GA &lt;br /&gt;
&lt;br /&gt;
  GET GA &amp;lt;protocol&amp;gt; &amp;lt;acc_nr&amp;gt; &amp;lt;acc_port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'&lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: Kommandoport &lt;br /&gt;
&lt;br /&gt;
  Bedeutung der Argumente: siehe 3.2.1.2&lt;br /&gt;
&lt;br /&gt;
  Der Server sendet an den Client alle verfügbare Info zu dem mit&lt;br /&gt;
  &amp;lt;protocol&amp;gt; und &amp;lt;acc_nr&amp;gt; spezifizierten Schaltdekoder.&lt;br /&gt;
  Diese Info muß wie folgt formatiert werden:&lt;br /&gt;
 &lt;br /&gt;
  INFO GA &amp;lt;protocol&amp;gt; &amp;lt;acc_nr&amp;gt; &amp;lt;acc_port&amp;gt; &amp;lt;state&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  (vgl. 3.2.1.2, ersetze &amp;lt;state&amp;gt; durch &amp;lt;action&amp;gt;)&lt;br /&gt;
 &lt;br /&gt;
  Sollte keine Information vorhanden sein, oder der Server den Befehl&lt;br /&gt;
  GET nicht unterstützen, dann muß der Server 'INFO &amp;lt;error code&amp;gt;' an den &lt;br /&gt;
  Client senden (vgl. 3.1). &lt;br /&gt;
&lt;br /&gt;
  3.2.2.3 Gerätegruppe FB&lt;br /&gt;
&lt;br /&gt;
  GET FB &amp;lt;module-type&amp;gt; &amp;lt;portnr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n' &lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: Kommandoport&lt;br /&gt;
&lt;br /&gt;
  Bedeutung der Argumente:&lt;br /&gt;
 &lt;br /&gt;
     module-type: S88       (Märklin s88-Bus am Parallelport des PC)&lt;br /&gt;
                  I8255     (i8255 Karte)&lt;br /&gt;
                  M6051     (Märklin s88-Bus via Interface 6051)&lt;br /&gt;
&lt;br /&gt;
     portnr     : konkreter Eingang eines Rückmeldemoduls &lt;br /&gt;
&lt;br /&gt;
  Der Server sendet auf dem Rückmeldekanal an den Client den aktuellen &lt;br /&gt;
  Status des mit &amp;lt;module-type&amp;gt; und &amp;lt;portnr&amp;gt; spezifizierten &lt;br /&gt;
  Rückmeldemoduleingangs. Diese Info muß wie folgt formatiert werden:&lt;br /&gt;
 &lt;br /&gt;
  INFO FB &amp;lt;module-type&amp;gt; &amp;lt;portnr&amp;gt; &amp;lt;state&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Wobei state entweder '0' oder '1' sein darf. &lt;br /&gt;
 &lt;br /&gt;
  Sollte keine Information vorhanden sein, oder der Server den Befehl&lt;br /&gt;
  GET nicht unterstützen, dann muß der Server 'INFO &amp;lt;error code&amp;gt;' an den &lt;br /&gt;
  Client senden (vgl. 3.1).              &lt;br /&gt;
&lt;br /&gt;
  3.2.2.4 Servicemode&lt;br /&gt;
&lt;br /&gt;
  Hier könnte man spezielle Kommandos zum Auslesen von Konfigurations-&lt;br /&gt;
  variablen diverser Dekoder spezifizieren.&lt;br /&gt;
&lt;br /&gt;
  3.2.2.5 sonstiges&lt;br /&gt;
&lt;br /&gt;
  Hier könnte man spezielle Kommandos für Spezialdekoder (z.B.&lt;br /&gt;
  für Drehscheiben) spezifizieren.&lt;br /&gt;
&lt;br /&gt;
  3.2.3 Befehlsparameter des Befehls WAIT&lt;br /&gt;
&lt;br /&gt;
  3.2.3.1 Gerätegruppe FB&lt;br /&gt;
&lt;br /&gt;
  WAIT FB &amp;lt;module-type&amp;gt; &amp;lt;portnr&amp;gt; &amp;lt;value&amp;gt; &amp;lt;timeout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Länge eines Kommandos (variabel): Befehlsendezeichen ist '\n'   &lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: Kommandoport&lt;br /&gt;
&lt;br /&gt;
  Wartet, bis portnr den Wert value (0,1) annimmt. Wartet&lt;br /&gt;
  aber höchstens timeout Sekunden. Sendet falls der timeout nicht&lt;br /&gt;
  eingetreten ist, die gleiche Information wie GET FB.&lt;br /&gt;
  Sollte der timeout überschritten werden, wird 'INFO -3' an den &lt;br /&gt;
  Client gesendet.&lt;br /&gt;
&lt;br /&gt;
  Sollte keine Information vorhanden sein, oder der Server den Befehl&lt;br /&gt;
  WAIT nicht unterstützen, dann muß der Server 'INFO &amp;lt;error code&amp;gt;' an den &lt;br /&gt;
  Client senden (vgl. 3.1).&lt;br /&gt;
&lt;br /&gt;
  3.2.6 Befehlsparameter des Befehls INIT&lt;br /&gt;
&lt;br /&gt;
  INIT FB &amp;lt;module-type&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Kommunikationsports: Client -&amp;gt; Server: Kommandoport&lt;br /&gt;
                       Server -&amp;gt; Client: entfällt&lt;br /&gt;
&lt;br /&gt;
  Initialisiert die entsprechenden Rückmeldeeinheiten. Keine Nachricht&lt;br /&gt;
  an den Client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4. Datenformate der Serverinformationen&lt;br /&gt;
&lt;br /&gt;
  4.1 Rückmeldepollport&lt;br /&gt;
&lt;br /&gt;
  Die Datenübertragung auf dem Rückmeldepollport unterliegt den gleichen&lt;br /&gt;
  Beschränkungen wie die des Kommandoports (plain text, '\n' als Endezeichen).&lt;br /&gt;
  Die Daten müssen mit folgendem Format übertragen werden:  &lt;br /&gt;
&lt;br /&gt;
  INFO FB &amp;lt;module-type&amp;gt; &amp;lt;portnr&amp;gt; &amp;lt;state&amp;gt;&lt;br /&gt;
  (vgl. 3.2.2.3)&lt;br /&gt;
&lt;br /&gt;
  4.2 Informationsport  &lt;br /&gt;
&lt;br /&gt;
  Die Datenübertragung auf dem Informationsport unterliegt den gleichen&lt;br /&gt;
  Beschränkungen wie die des Kommandoports (plain text, '\n' als Endezeichen).&lt;br /&gt;
  Die Daten müssen mit folgenden Formaten - abhängig von der Gerätegruppe -&lt;br /&gt;
  übertragen werden:&lt;br /&gt;
&lt;br /&gt;
  INFO GL &amp;lt;protocol&amp;gt; &amp;lt;addr&amp;gt; &amp;lt;direction&amp;gt; &amp;lt;V&amp;gt; &amp;lt;V_max&amp;gt; &amp;lt;func&amp;gt; &amp;lt;nro_f&amp;gt; &amp;lt;f1&amp;gt; .. &amp;lt;fn&amp;gt;&lt;br /&gt;
  (vgl. 3.2.2.1)&lt;br /&gt;
&lt;br /&gt;
  INFO GA &amp;lt;protocol&amp;gt; &amp;lt;acc_nr&amp;gt; &amp;lt;acc_port&amp;gt; &amp;lt;state&amp;gt; &lt;br /&gt;
  (vgl. 3.2.2.2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5. Ausblicke, zukünftige Erweiterungen &lt;br /&gt;
&lt;br /&gt;
  Ich habe bewußt einige Ideen, die andiskutiert wurden, nicht mit &lt;br /&gt;
  aufgenommen. Ich bin der Meinung, daß wir einen vorläufigen&lt;br /&gt;
  Schlußstrich ziehen und die ganzen netten Dinge implementieren &lt;br /&gt;
  sollten. Damit die anderen guten Ideen nicht verloren gehen, werde&lt;br /&gt;
  ich sie in diesem Abschnitt aufführen.&lt;br /&gt;
&lt;br /&gt;
  5.1 Zentrale Konfiguration&lt;br /&gt;
&lt;br /&gt;
  Von Kurt Haders stammt der Vorschlag einer zentralen Konfigurationsdatei.&lt;br /&gt;
  Hauptanliegen ist es, mehr &amp;quot;Wissen&amp;quot; von den Clients in den Server zu&lt;br /&gt;
  verlagern. Ein Format, wie eine solche Konfigurationsdatei aussehen soll,&lt;br /&gt;
  liegt noch nicht vor. Das Übertragungsprotokoll ist duch den &lt;br /&gt;
  Protokollbezeichner 'PS' (protocol by server) bereits darauf vorbereitet.&lt;br /&gt;
&lt;br /&gt;
  5.2 Erweiterung der Befehle auf andere Gerätegruppen&lt;br /&gt;
&lt;br /&gt;
  Von Matthias Trute kommt der Vorschlag den Befehl WAIT auch für die&lt;br /&gt;
  Gerätegruppen GL und GA zuzulassen. Allerdings kann es hierbei zu&lt;br /&gt;
  Inkonsistenzen kommen. Weiterhin könnte man man bei WAIT Wildcards&lt;br /&gt;
  ('*') zulassen.&lt;br /&gt;
&lt;br /&gt;
  5.3 Quittierung von Befehlen&lt;br /&gt;
&lt;br /&gt;
  Martin Ostermann hängt an einer Befehlsquittierung. Dieses könnte über&lt;br /&gt;
  den Rückkanal des Kommandoports realisiert werden.&lt;br /&gt;
&lt;br /&gt;
  5.4 Konfiguration des Servers auslesen&lt;br /&gt;
&lt;br /&gt;
  Von Edbert van Eimeren kommt der Vorschlag, daß Clients die Konfiguration&lt;br /&gt;
  des Servers abfragen können sollten (neuer Befehl: CONFGET).&lt;/div&gt;</summary>
		<author><name>Werner Falkenbach</name></author>	</entry>

	</feed>