:Revision=2
:html
<<
128.158
XMux-Objekt|XMux
--
ber das IP Objekt <!RW>XMux werden sowohl die Kreuzmultiplexer der 32x4 Serie als auch die RCMux (Bauteil-Messungs-Multiplexer) angesprochen. Die Syntax ist also fr beide identisch.
>>

<<
128.158.2
Prozeduren des XMux-Objekts|Prozeduren
--
>>
<<
128.158.2.1
XMux.Clear|Clear
--
<!DEF>
procedure <!TW>XMUX.CLEAR (aXMuxCard : address);
<!TXT>
Lscht alle Verbindungen auf dem Kreuzmultiplexer / Bauteilmultiplexer <!PW>aXMuxCard.

<!DEF>
procedure <!TW>XMUX.CLEAR (aXMuxAdr : address);
<!TXT>
Lscht alle Verbindungen in der komplette Zeile oder Spalte, je nach dem, ob <!PW>aXMuxAdr eine Zeilen- oder Spaltenadresse ist.

<!DEF>
procedure <!TW>XMUX.CLEAR (aXMuxRow, aXMuxCol : address);
<!TXT>
Lscht die Verbindung, die durch die Zeilen- und Spaltenadresse angegeben ist. Die beiden Adressen mssen auf einer Karte liegen.

<!DEF>
procedure <!TW>XMUX.CLEAR (aXMuxCross : address);
<!TXT>
Setzt das Relais an der Kreuzungsadresse zurck.

<!DEF>
procedure <!TW>XMUX.CLEAR (aXMuxCard : address; rRow, rCol : real);
<!TXT>
Lscht auf dem Kreuzmultiplexer / Bauteilmultiplexer <!PW>aXMuxCard die Kreuzung <!PW>rRow (Zeile) mit <!PW>rCol (Spalte). Die beiden Werte sind hier Zahlen und keine Adressen!
>>

<<
128.158.2.2
XMux.Set|Set
--
<!DEF>
procedure <!TW>XMUX.SET (aXMuxRow, aXMuxCol : address [; rMode : real [; rDelay : real]]);
<!TXT>
<!DEF>
procedure <!TW>XMUX.SET (aXMuxCross : address [; rMode : real [; rDelay : real]]);
<!TXT>
Setzt die Verbindung, die durch die Zeilen- und Spaltenadresse angegeben ist. Die beiden Adressen mssen auf einer Karte liegen. Alternativ kann direkt eine Kreuzungsadresse angegeben werden.

<!DEF>
procedure <!TW>XMUX.SET (aXMuxCard : address, rRow, rCol : real [; rMode : real [; rDelay : real]]);
<!TXT>
Setzt auf dem Kreuzmultiplexer / Bauteilmultiplexer <!PW>aXMuxCard die Kreuzung <!PW>rRow (Zeile) mit <!PW>rCol (Spalte). Die beiden Werte sind hier Zahlen und keine Adressen!

<!STBL>
<!+>rMode<!+>Auswirkung<!>
<!c>0<!>die Verbindung wird sofort gesetzt und es werden keine anderen Verbindungen beeinflusst.<!>
<!c>1<!>es werden alle anderen Verbindungen in der Zeile gelscht<!>
<!c>2<!>es werden alle anderen Verbindungen in der Spalte gelscht<!>
<!c>3<!>wie Kombination aus 1 und 2<!>
<!ETBL>
Ist <!PW>rDelay angegeben und grer als 0, dann wird zwischen dem Lschen und dem Setzen <!PW>rDelay ms gewartet (Break-Before-Make Delay).
In diesem Fall wird ein mit <!RW>XMux.Store eingeleitetes Zwischenspeichern abgebrochen (hat dieselbe Auswirkung wie <!RW>XMux.Send).

War die Verbindung vor dem Befehl schon gesetzt, so macht dieser Befehl berhaupt nichts (weder Lschen noch Warten).
>>

<<
128.158.2.3
XMux.SetEx|SetEx
--
<!DEF>
procedure <!TW>XMux.SetEx (aCard : address; rGroup : real; sCommand : string);
<!TXT>
Setzt/lscht Verbindungen auf XMux-Karten und wartet

 <!PW>rGroup whlt eine Aktionsgruppe aus

 <!PW>sCommand hat folgende Form:
<!CODE>
<b><!SW>Adresse,<!SW>Aktion[,<!SW>Aktion...][;<!SW>Adresse,<!SW>Aktion[,<!SW>Aktion...]...]</b>
<!TXT>

 <b><!SW>Adresse</b> definiert die gesamte Karte, eine einzelne Zeile oder Spalte oder eine spezielle Kreuzung
<!STBL>
<!><b><!SW>A</b><!>= gesamte Karte (All, kann nur gelscht werden)<!>
<!><b><!SW>Rx</b><!>= Row (Zeile) x  (kann nur gelscht werden)<!>
<!><b><!SW>Cy</b><!>= Column (Spalte) y (kann nur gelscht werden)<!>
<!><b><!SW>RxCy</b><!>= Kreuzung von Row (Zeile) x mit Column (Spalte) y<!>
<!ETBL>

 <b><!SW>Aktion</b> hat folgenden Aufbau:
<!CODE>
<b><!SW>nS[|-+] | <!SW>nR | <!SW>nDz </b><i>mit n=0..9</i>
<!TXT>

<b><!SW>n</b> gibt die Gruppe an. Es werden nur solche Aktionen ausgefhrt, deren Gruppe durch den Parameter <!PW>rGroup ausgewhlt ist
<!STBL>
<!><!SW>S </td><td rowspan=2>Setzen, ohne andere Verbindungen zu bercksichtigen</td></tr>
<!><!SW>S. <!>
<!><!SW>S| <!>Setzen, vorher andere Verbindungen der Spalte (Column) lschen<!>
<!><!SW>S- <!>Setzen, vorher andere Verbindungen der Zeile (Row) lschen<!>
<!><!SW>S+ <!>Setzen, vorher andere Verbindungen in der Zeile (Row) und der Spalte (Column) lschen<!>
<!><!SW>R <!>Rcksetzen<!>
<!><!SW>Dz <!>Delay von z Millisekunden<!>
<!ETBL>
Hinweise:
<ul indent=14>
<li>S ist nur fr Kreuzungen erlaubt!</li>
<li>R geht auch mit ganzen Zeilen, Spalten oder allem</li>
</ul>
</li><br>
<ul indent=14>
<li>Wird durch <!PW>rGroup keine Aktion aktiviert, so wird nichts gemacht.</li>
<li>Sind keine Aktionen angegeben, so wird nichts gemacht.</li>
<li>Ist <!PW>sCommand leer, so passiert nichts.</li>
<li>In <!PW>sCommand knnen mehrere AdrKonstanten mit Aktionen angegeben werden (durch ';' getrennt), die AdrKonstanten werden dann nacheinander bearbeitet.</li>
</ul>

Beispiele
<!CODE>
 SetEx (XMUX1, 1, 'R1C3,1s,9r,1d100,9d50');
          !    !    !   !  !  !     +-- wenn Gruppe 9, dann Delay 50 ms
          !    !    !   !  !  +-- wenn Gruppe 1, dann 100 ms Delay
          !    !    !   !  +-- wenn Gruppe 9, dann Kreuzung setzen
          !    !    !   +-- wenn Gruppe 1, dann Kreuzung setzen
          !    !    +-- Kreuzung Zeile 1 mit Spalte 3
          !    +-- Gruppe 1 aktiviert
          +-- Kreuzmultiplexer XMUX1
Da Gruppe 1 aktiv ist, wird die Kreuzung gesetzt und 100 ms gewartet!

 SetEx (XMUX1, 2, 'R1,1C);
Macht nichts, da keine Aktion fr Gruppe 2

 SetEx (XMUX1, 1, 'R1C3,1s,1d100;R2C4,1s);
Setzt Kreuzung R1C3, wartet 100 ms und setzt Kreuzung R2C4.
<!TXT>
>>


<<
128.158.2.4
XMux.Store|Store
--
<!DEF>
procedure <!TW>XMUX.STORE (aXMuxCard : address);
<!TXT>
Bringt die Kreuzmultiplexerkarte <!PW>aXMuxCard dazu, alle nderungen vorerst nur intern zu speichern.

Mit <!RW>XMux.Send werden die nderungen dann ausgegeben.

Achtung: Ein Setz-Befehl mit Brake-Before-Make und Delay<>0 hebt den StoreZustand sofort auf!
>>

<<
128.158.2.5
XMux.Send|Send
--
<!DEF>
procedure <!TW>XMUX.SEND (aXMuxCard : address);
<!TXT>
Hebt den <!RW>XMux.Store Befehl auf. Eventuell zwischengespeicherte nderungen werden auf einem Schlag ausgegeben. Zuknftige Befehle werden wieder direkt ausgegeben.
>>

<<
128.158.3
Funktionen des XMux-Objekts|Funktionen
--
>>
<<
128.158.3.1
XMux.Get|Get
--
<!DEF>
function <!TW>XMUX.GET (aXMuxRow, aXMuxCol : address) : real;
<!TXT>
<!DEF>
function <!TW>XMUX.GET (aXMuxCross : address) : real;
<!TXT>
Holt den Zustand der Verbindung, die durch die Zeilen- und Spaltenadresse angegeben ist. Die beiden Adressen mssen auf einer Karte liegen. Alternativ kann direkt eine Kreuzungsadresse angegeben werden.

<!DEF>
function <!TW>XMUX.GET (aXMuxCard : address; rRow, rCol : real) : real;
<!TXT>
Holt vom Kreuzmultiplexer / Bauteilmultiplexer <!PW>aXMuxCard den Zustand der Kreuzung <!PW>rRow (Zeile) mit <!PW>rCol (Spalte). Die beiden Werte sind hier Zahlen und keine Adressen!

Fr den Rckgabewert gilt:
1 = gesetzt
0 = offen

Falls ein <!RW>XMux.Stored Befehl ausgefhrt wurde, wird der zwischengespeicherte Wert geliefert, nicht der augenblicklich anstehende.
>>

