mit der SysLibFile kann ich ja strings in ein File schreiben. Will ich aber diese wieder einlesen, kann ich mit SysLibRead die Daten nur als DWORD holen. Habe ich da was falsch verstanden?
Ich habe mir vorgestellt, dass ich diverse Zahlenwerte mit einem Textzeichen (z.B. *) trenne und dann beim einlesen dieses Zeichen auswerte.
Alternativ könnte ich beim schreiben eine feste Zeichenlänge wählen und die Zahlen in Strings umwandeln.
Leider ist der Controller im Einsatz und damit nicht für Pröbeleien verfügbar...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe ein kleines Beispiel zum Schreiben einer kommaseparierten CSV datei angehängt.
Leider hab ich auf die Schnelle nichts zum Lesen gefunden, deshalb hier ein bischen geschreibsel was haoffentlich weiterhilft:
SysFileRead hat 3 Parameter
File das File-Handle das bei SysFileOpen zurückgeliefert wird
Buffer dahin werden die in 3. angegebene Anzahl der Bytes geschrieben
Size siehe 2.
Übrigens zum Ausprobieren eignet sich herforagend die in einer Standard CoDeSys enthaltene SoftSPS PlcWinNT die ohne funktionelle Einschränkung als Demo 2 Stunden läuft. Sind die 2 Stunden abgelaufen beendet sie sich und kann aber gleich wider gestartet werden.
Hallo,
mit der SysLibFile kann ich ja strings in ein File schreiben. Will ich aber diese wieder einlesen, kann ich mit SysLibRead die Daten nur als DWORD holen. Habe ich da was falsch verstanden?
Ich habe mir vorgestellt, dass ich diverse Zahlenwerte mit einem Textzeichen (z.B. *) trenne und dann beim einlesen dieses Zeichen auswerte.
Alternativ könnte ich beim schreiben eine feste Zeichenlänge wählen und die Zahlen in Strings umwandeln.
Leider ist der Controller im Einsatz und damit nicht für Pröbeleien verfügbar...
Hallo,
Ich habe ein kleines Beispiel zum Schreiben einer kommaseparierten CSV datei angehängt.
Leider hab ich auf die Schnelle nichts zum Lesen gefunden, deshalb hier ein bischen geschreibsel was haoffentlich weiterhilft:
SysFileRead hat 3 Parameter
File das File-Handle das bei SysFileOpen zurückgeliefert wird
Buffer dahin werden die in 3. angegebene Anzahl der Bytes geschrieben
Size siehe 2.
Übrigens zum Ausprobieren eignet sich herforagend die in einer Standard CoDeSys enthaltene SoftSPS PlcWinNT die ohne funktionelle Einschränkung als Demo 2 Stunden läuft. Sind die 2 Stunden abgelaufen beendet sie sich und kann aber gleich wider gestartet werden.
CSV File Append.zip [5.16 KiB]
CSV Datei einmalig.zip [4.99 KiB]
Hallo
Ich lese eine Zeile (beendet mit CR,LF (13d,10d)) aus einem File folgendermassen aus:
Read File to byFileBuffer: array[1..8192] of byte;
dwFileSize:=SysFileGetSize(FileName:=strFileName);
IF dwFileSize < 8192 THEN
ELSE ( Max. Filesize exceeded )
END_IF
GetLine from byFileBuffer
strLine := '';
pstr := ADR(aby[0]);
WHILE iFilePos < dwFileSize DO
END_WHILE
IF iFilePos > dwFileSize THEN
END_IF
IF LEN(strLine)<1 THEN
END_IF
Ich hab das ganze als library ausgeführt, die dann Files im Ini Format, also mit Group und Key Tags schreibt, bzw. liest.
Wahlweise als BOOL, WORD, LREAL, STRING
z.B.
[ACHSPARAMETER] <- GROUP TAG
Acceleration=1000.0 <- KEY + LREAL Value
Hoffe das hilft dir.
Prinzipiell kannst du auch die ganze lib haben, die kann dann noch verschlüsseln, entschlüsseln undwasweissichnochalles.
Aber da gibts (noch) keine vollständige Doku dazu.
MfG
Erik
Besten Dank für die guten Tips, ich habe inzwischen die für meine Bedürfnisse angepasste Lösung gefunden und es funktioniert.