|
CCS Modul E_ARRAY_IO |
$Id: e_array_io.C,v 1.36 2005/09/06 15:14:28 gew3rt Exp $
---------------------------------------------------------------------
Kurzbeschreibung: import / export von Feldern
---------------------------------------------------------------------
Projekt: CCS
Sourcefile: e_array_io.C
Autor: RtW/TEF72-Juilfs (12.12.95)
Zielsystem: HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
Sprache: C++
---------------------------------------------------------------------
Prototyp:
void e_array_io(
,shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
---------------------------------------------------------------------
Aufruf: im Vectorinterpreter
(*funktionen[modulnummer])
(Ssp_expand_zeile
,Ssp_expand_wert
,p_verwaltung->begin_modulblock
,p_verwaltung->anzahl_modulparameter);
---------------------------------------------------------------------
Funktionsbeschreibung:
Ueber dieses Modul koennen Felder vom Typ INT bzw. DOUBLE importiert
(MODUS = R oder RI) oder exportiert (MODUS = W) werden.
Zusaetzlich ist es moeglich auch einzelne Variablenwerte zu importieren bzw. zu
exportieren. Hier ist dann auch der Typ STRING zulaessig.
- Mit dem Modus R gelesene Dateien müssen immer den fixen Namen "messdat_read"
enthalten. Es handelt sich meistens um externe Dateien.
- Der Modus RI (internal read) dient dazu, die in CCS über den messdat-Service
(z.B. mit dem Modul M_LABVIEW) geschriebenen Dateien wieder lesen zu können.
Zu beachten ist, dass die Parametrisierung ab dem Header_1 bzw, dem ARRAY_1
beginnt und zusammenhaengend ist, d.h. zwischen den einzelnen Parameterzeilen darf
keine Luecke sein, da diese Luecke einer Endekennzeichnung entspricht!
Beim Export werden zuerst mehrere Headerzeilen erzeugt z.B.
1: date: 01.12.2002
2: time: 16:25:43
3: name: ccs
4: file: b_muster01acse01_section_01_acc0001_0_07062002_status_byte.csv
5: SCU
6: STATUS_V0N;RESPONSE_V0N;STATUS_V0P;RESPONSE_V0P;STATUS_H0
Die Zeilen haben folgende Bedeutung
1: aktuelles Datum
2: aktuelle Zeit
3: Benutzer wird vom Programm immer mit ccs belegt
4: Dateinamen, dieser wird zusammengesetzt aus der in der
Konfigurationsdatei unter dem Service messdat
gespeicherten Dateibeschreibung, dem im Parameter
FILENAME angegebenen String (im Beispiel status_byte)
und der Dateikennung ".csv".
Die Dateibeschreibung in der Konfigurationsdatei für
das obige Beispiel sieht wiefolgt aus:
messdat.typ: nfs
messdat.interface: rcp
messdat.host: uxpdb1
messdat.directory: /hw/messdat/%{TYP}/
messdat.filename: %{TTNR}%{TYP}%{VARIANTE}_
%{ECUID}_%{KNOTEN}_%{SECTION}_
%{DAY}%{MONTH}%{YEAR}
Ist fuer messdat.interface rcp eingetragen wird die
Messdatendatei auf /LocalDisk/config/ gespeichert,
anschliessend wird die datei auf messdat.host (uxpdb1)
kopiert und anschliessend gelöscht.
Bei allen anderen Werte für messdat.interface wird die
Datei unter dem messdat.directory angelegt und nicht
auf messdat.host kopiert.
5: String der in dem Parameter SUB_DIRECTORY uebergeben wurde.
d.h.: dieser Wert wird an den uebergebenen Service vom
"messdar.diretory" angehaengt
6: Ausgabe der Strings die in den Parametern HEADER_1
bis HEADER_9 uebergeben wurden.
Amschliessend werden die Daten mit ; getrennt gespeichert.
Beim Import wird der Dateiname zusammengesetzt aus dem Verzeichnis
im Service messdat.directory, dem String "messdat_read_", dem im
Parameter FILENAME gepeicherten String und der Dateikennung ".csv".
Die interne Struktur ist identisch wie unter Export beschrieben, wobei
die 6 Headerzeilen nicht ausgewertet werden.
Sind mehr Daten in der Datei gespeichert als Feldelemente definiert
sind, wird eine Fehlermeldung erzeugt. Es können auch unterschiedlich
grosse Felder eingelesen werden. Das Einlesen eines Feldes kann mit einem
leeren String beendet werden.
Beschreibung der Modulübergabeparameter:1 PRUEFSCHRITTGAUDI Prüfschritt ------------------------------2 POSITION
PAV- Position ------------------------------3 FILENAME
Kuerzel das an den Dateinamen angefuegt wird ------------------------------4 SUB_DIRECTORY
(neu, alter Name war KOMMENTAR) Kommentarzeile die beim exporieren in den Header in Zeile 5 geschrieben wird. zusätzlich kann hier der Subdirectory-Name angegeben werden für Read/Write ------------------------------5 MODUS
R = lesen (importieren) von einer Datei in bis zu 9 Feldern RI= lesen einer intern von einem CCS-Modul geschriebenen Datei W = schreiben (exportieren) von bis zu 9 Feldern in eine Datei ------------------------------6 FORMAT
ASCII ------------------------------7 HEADER_1
Headertext 1 ------------------------------8 ARRAY_1
Arrayvariable 1 oder Variable 1 ------------------------------9 HEADER_2
Headertext 2 ------------------------------10 ARRAY_2
Arrayvariable 2 oder Variable 2 ------------------------------11 HEADER_3
Headertext 3 ------------------------------12 ARRAY_3
Arrayvariable 3 oder Variable 3 ------------------------------13 HEADER_4
Headertext 4 ------------------------------14 ARRAY_4
Arrayvariable 4 oder Variable 4 ------------------------------15 HEADER_5
Headertext 5 ------------------------------16 ARRAY_5
Arrayvariable 5 oder Variable 5 ------------------------------17 HEADER_6
Headertext 6 ------------------------------18 ARRAY_6
Arrayvariable 6 oder Variable 6 ------------------------------19 HEADER_7
Headertext 7 ------------------------------20 ARRAY_7
Arrayvariable 7 oder Variable 7 ------------------------------21 HEADER_8
Headertext 8 ------------------------------22 ARRAY_8
Arrayvariable 8 oder Variable 8 ------------------------------23 HEADER_9
Headertext 9 ------------------------------24 ARRAY_9
Arrayvariable 9 oder Variable 9 ------------------------------26 FEHLERFLAG
...