:Revision=2
:html
<<
128.144
Objekt fr Serielle-IO-Module|SerIO
--
ber das IP-Objekt <!RW>SerIO kann direkt auf alle definierten Seriellen IO Module zugegriffen werden. 

Dadurch knnen Befehle an solche Module gesendet werden, die im Programm noch nicht implementiert wurden oder auf Funktionen bekannter Module zugegriffen werden, auf die das Programm keinen Zugriff bietet.
>>

<<
128.144.1
Funktionen des SerIO-Objekts|Funktionen
--
>>

<<
128.144.1.1
SerIO.Send|Send
--
<!DEF>
function <!TW>SerIO.Send (sTarget, sSend : string; var sRecv : string [; rTimeout : real]) : real;
<!TXT>
Sendet den (HexString) <!PW>sSend an das in <!PW>sTarget angegebene SerIO-Modul und liefert dessen Antwort in <!PW>sRecv zurck. 

<font color=#880000>
Warnung:
ber diese Funktion kann 'am Programm vorbei' auf die SerIO Module zugegriffen werden. Insbesondere werden nderungen an Ein- oder Ausgngen nicht registriert und daher nicht in den Monitoren dargestellt. Im Falle von Ausgngen werden auerdem die internen Schattenregister nicht aktualisiert und es kann sein, dass nachfolgende nderungen nicht ausgegeben werden, weil sie keine nderung gegenber den Daten im Schattenregister darstellen.
Beispiel:
<ul indent=15>
<li>MechanikIO-Ausgang wird ber MechIO-Befehl gesetzt</li>
<li>Der Ausgang wird ber einen SerIO-Befehl zurckgesetzt</li>
<li>MechanikIO-Ausgang soll wird ber MechIO-Befehl wieder gesetzt werden</li>
</ul>
der letzte Befehl wird nicht ausgefhrt, da die MechIO Komponente vom ersten Befehl her noch annimmt, dass der Ausgang schon gesetzt ist.</li>
</font>

 <!PW>sTarget kann entweder direkt einen Modulnamen angeben: <!SW>AdapterMechIO oder eine Kombination der Art <!SW>Modulart.ModulNummer sein.

Modulart kann hierbei sein: 
<!STBL>
<!+>Modulart<!+>Beschreibung<!>
<!>MechIO<!>Mechanikmodul<!>
<!>IMeasX4<!>4fach Strommessmodul<!>
<!>RCMeas<!>RC-Messmodul<!>
<!>AdapCPU<!>Adapter CPU<!>
<!>Unknown<!>nicht nher definiertes Modul<!>
<!ETBL>

 <!PW>sSend enthlt nur die reinen Nutzdaten der Abfrage, ohne #$12, die Adresse oder das Lngenbyte (Beispiel: '3F' fr die Abfrage der Firmware).

Das Ergebnis in <!PW>sRecv enthlt jedoch die komplette Antwort inklusive dem einleitenden #$12, der Adresse und den Kommandozeichen.

Wird <!PW>rTimeOut nicht angegeben oder ist <!PW>rTimeout gleich -1, so wird das Standard Timeout aus der Grundeinstellung der seriellen Schnittstelle verwendet. Andernfalls gibt <!PW>rTimeout das Timeout in Millisekunden an.

Der Rckgabewert der Funktion ist ein Fehlercode, der das Ergebnis der Kommunikation beschreibt:
<!STBL>
<!+>Wert<!+>Bedeutung<!>
<!c>0<!>kein Fehler, alles in Ordnung<!>
<!c>1<!>Timeout, keine Antwort innerhalb der Wartezeit<!>
<!c>2<!>Antwort war zu kurz<!>
<!c>3<!>Antwort passt nicht zum Kommando<!>
<!c>4<!>Ungltige Zeichen - Die Antwort enthlt nicht nur Hex-Ziffern und Steuerzeichen<br /><!REM>(bei Abfrage der Firmware ist dies normal)<!TXT><!> 
<!c>5<!>Das Modul meldet "Fehler im Kommando"<!>
<!ETBL>

Beispiele:
<!CODE>
// Abfrage der Firmware des Moduls 2 aus der Gruppe der nicht nher definierten Module
rStatus:=SerIO.Send ('Unknown.2', '3F', sRecv);

// Abfrage der Firmware des Moduls mit dem Namen 'AdapterMechMod'
rStatus:=SerIO.Send ('AdapterMechMod', '3F', sRecv);
<!TXT>
>>

<<
128.144.1.2
SerIO.Exists|Exists
--
<!DEF>
function <!TW>SerIO.Exists (sTarget : string) : real;
<!TXT>
Liefert <!RW>TRUE, wenn das durch <!PW>sTarget angegebene SerIO-Modul existiert.

 <!PW>sTarget kann entweder direkt einen Modulnamen angeben: <!SW>AdapterMechIO oder eine Kombination der Art <!SW>Modulart.ModulNummer sein.

Modulart kann hierbei sein: 
<!STBL>
<!+>Modulart<!+>Beschreibung<!>
<!>MechIO<!>Mechanikmodul<!>
<!>IMeasX4<!>4fach Strommessmodul<!>
<!>RCMeas<!>RC-Messmodul<!>
<!>AdapCPU<!>Adapter CPU<!>
<!>Unknown<!>nicht nher definiertes Modul<!>
<!ETBL>
>>

<<
128.144.1.3
SerIO.IsActive|IsActive
--
<!DEF>
function <!TW>SerIO.IsActive (sTarget : string) : real;
<!TXT>
Liefert <!RW>TRUE, wenn das durch <!PW>sTarget angegebene SerIO-Modul wirklich angesprochen wird.

 <!PW>sTarget kann entweder direkt einen Modulnamen angeben: <!SW>AdapterMechIO oder eine Kombination der Art <!SW>Modulart.ModulNummer sein.

Modulart kann hierbei sein: 
<!STBL>
<!+>Modulart<!+>Beschreibung<!>
<!>MechIO<!>Mechanikmodul<!>
<!>IMeasX4<!>4fach Strommessmodul<!>
<!>RCMeas<!>RC-Messmodul<!>
<!>AdapCPU<!>Adapter CPU<!>
<!>Unknown<!>nicht nher definiertes Modul<!>
<!ETBL>
>>

<<
128.144.1.4
EEPROM-Funktionen|EEPROM
--
>>

<<
128.144.1.4.1
SerIO.EEPROM.Read|Read
--
<!DEF>
function <!TW>SerIO.EEPROM.Read ( sTarget : String; rEEPROMType, rIICAddress, rEEPROMAddress, rCount, rPageSize : real; var vData : Vector ) : real;
<!TXT>
Lesen eines EEPROMs des SerIO-Modules.

Mit <!PW>sTarget kann entweder direkt einen Modulnamen angeben: <!SW>AdapterMechIO oder eine Kombination der Art <!SW>Modulart.ModulNummer sein.

<!PW>rEEPROM definiert den EEPROM-Typ, welche gelesen werden soll. Folgende Auswahl steht zur Verfgung:


<!STBL>
<!+>Nummer<!+>Beschreibung<!>
<!>1<!>EEPROM 24C64 der MIO1616 ber alte Variante<!>
<!>2<!>EEPROM am externen IC-Bus mit 8 Bit IC Adresse<!>
<!>3<!>EEPROM am externen IC-Bus mit 16 Bit IC Adresse<!>
<!>4<!>EEPROM intern auf MIO1616 IC-Bus (8kByte) 16Byte Page<!>
<!>5<!>EEPROM intern ATMEL (8kByte) 32Byte Page<!>
<!ETBL>

<!PW>rIICAddress definiert die IIC - Adresse, wenn ein externer EEPROM verwendet wird. Wertebereich: 0..255 fr die Typen: 2 & 3.


<!PW>rEEPROMAddress kennzeichnet die Startadresse fr das Lesen. Wertebereich 0.. 65535 (je nach EEPROM auf kleinere Werte beschrnkt).


<!PW>rCount gibt die Anzahl der zu lesenden Daten an. Wertebereich: 1..255.


<!PW>rPageSize gibt die Pagesize des verwendeten EEPROMs an. Ist hier eine Wert > 0 eingetragen, bernimmt der IP-Befehl automatisch die Segmentierung der Schreibbefehle. Wertebereich: 0..255 fr die Typen: 2 & 3. Bei den internen EEPROMs wird die PageSize automatisch gesetzt.


In <!PW>vData werden die gelesenen Daten zurckgegeben.

Der Rckgabewert der Funktion ist ein Fehlercode, der das Ergebnis der Kommunikation beschreibt.


<!STBL>
<!+>Wert<!+>Bedeutung<!>
<!c>0<!>kein Fehler, alles in Ordnung<!>
<!c>1<!>Timeout, keine Antwort innerhalb der Wartezeit<!>
<!c>2<!>Antwort war zu kurz<!>
<!c>3<!>Antwort passt nicht zum Kommando<!>
<!c>4<!>Ungltige Zeichen - Die Antwort enthlt nicht nur Hex-Ziffern und Steuerzeichen<br /><!REM>(bei Abfrage der Firmware ist dies normal)<!TXT><!> 
<!c>5<!>Das Modul meldet "Fehler im Kommando"<!>
<!c>7<!>Empfangsdaten zu lang<!>
<!c>8<!>Modul nicht aktiv<!>
<!c>9<!>Ack.-Error beim EEPROM Lesen/Schreiben<!>
<!c>10<!>Timeout beim EEPROM - Lesen/Schreiben<!>
<!c>11<!>Verify beim EEPROM - Schreiben<!>
<!c>12<!>Unbekannter Fehler beim EEPROM - Lesen/Schreiben<!>
<!c>>100<!>Fehler vom unterlagerten RS232 - Modul<!>
<!ETBL>
>>

<<
128.144.1.4.2
SerIO.EEPROM.Write|Write
--
<!DEF>
function <!TW>SerIO.EEPROM.Write ( sTarget : String; rEEPROMType, rIICAddress, rEEPROMAddress, rPageSize : real; var vData : Vector; rVerify : real ) : real;
<!TXT>
Schreiben eines EEPROMs des SerIO-Modules.

Mit <!PW>sTarget kann entweder direkt einen Modulnamen angeben: <!SW>AdapterMechIO oder eine Kombination der Art <!SW>Modulart.ModulNummer sein.

<!PW>rEEPROM definiert den EEPROM-Typ, welche geschrieben werden soll. Folgende Auswahl steht zur Verfgung:


<!STBL>
<!+>Nummer<!+>Beschreibung<!>
<!>1<!>EEPROM 24C64 der MIO1616 ber alte Variante<!>
<!>2<!>EEPROM am externen IC-Bus mit 8 Bit IC Adresse<!>
<!>3<!>EEPROM am externen IC-Bus mit 16 Bit IC Adresse<!>
<!>4<!>EEPROM intern auf MIO1616 IC-Bus (8kByte) 16Byte Page<!>
<!>5<!>EEPROM intern ATMEL (8kByte) 32Byte Page<!>
<!ETBL>

<!PW>rIICAddress definiert die IIC - Adresse, wenn ein externer EEPROM verwendet wird. Wertebereich: 0..255 fr die Typen: 2 & 3.


<!PW>rEEPROMAddress kennzeichnet die Startadresse fr das Schreiben. Wertebereich 0.. 65535 (je nach EEPROM auf kleinere Werte beschrnkt).


<!PW>rPageSize gibt die Pagesize des verwendeten EEPROMs an. Ist hier eine Wert > 0 eingetragen, bernimmt der IP-Befehl automatisch die Segmentierung der Schreibbefehle. Wertebereich: 0..255 fr die Typen: 2 & 3. Bei den internen EEPROMs wird die PageSize automatisch gesetzt.


<!PW>vData enthlt die zu schreibenden Daten.


<!PW>rVerify kennzeichnet, ob die geschriebenen Daten zur Kontrolle gelesen werden sollen (True/False).


Der Rckgabewert der Funktion ist ein Fehlercode, der das Ergebnis der Kommunikation beschreibt.


<!STBL>
<!+>Wert<!+>Bedeutung<!>
<!c>0<!>kein Fehler, alles in Ordnung<!>
<!c>1<!>Timeout, keine Antwort innerhalb der Wartezeit<!>
<!c>2<!>Antwort war zu kurz<!>
<!c>3<!>Antwort passt nicht zum Kommando<!>
<!c>4<!>Ungltige Zeichen - Die Antwort enthlt nicht nur Hex-Ziffern und Steuerzeichen<br /><!REM>(bei Abfrage der Firmware ist dies normal)<!TXT><!> 
<!c>5<!>Das Modul meldet "Fehler im Kommando"<!>
<!c>7<!>Empfangsdaten zu lang<!>
<!c>8<!>Modul nicht aktiv<!>
<!c>9<!>Ack.-Error beim EEPROM Lesen/Schreiben<!>
<!c>10<!>Timeout beim EEPROM - Lesen/Schreiben<!>
<!c>11<!>Verify beim EEPROM - Schreiben<!>
<!c>12<!>Unbekannter Fehler beim EEPROM - Lesen/Schreiben<!>
<!c>>100<!>Fehler vom unterlagerten RS232 - Modul<!>
<!ETBL>
>>

<<
128.144.2
Prozeduren des SerIO-Objekts|Prozeduren
--
>>

<<
128.144.2.1
SerIO.Log|Log
--
<!DEF>
procedure <!TW>SerIO.Log (sText : string);
<!TXT>
Schreibt den String <!PW>sText in die SerIO.Log Datei.

Wirkt sich nur dann aus, wenn das Logging in der Grundeinstellung oder mit dem Befehl <!RW>SerIO.Log.On eingeschaltet wurde.
>>

<<
128.144.2.1.1
SerIO.Log.On|On
--
<!DEF>
procedure <!TW>SerIO.Log.On;
<!TXT>
Aktiviert das Loggen der SerIO Kommunikation in die Datei %LOG%\SerIO.Log

berschreibt die Einstellung aus der Grundeinstellung, aber nur bis zum nchsten Reset, nicht permanent.
>>

<<
128.144.2.1.2
SerIO.Log.Off|Off
--
<!DEF>
procedure <!TW>SerIO.Log.Off;
<!TXT>
Deaktiviert das Loggen der SerIO Kommunikation in die Datei %LOG%\SerIO.Log

berschreibt die Einstellung aus der Grundeinstellung, aber nur bis zum nchsten Reset, nicht permanent.
>>
