Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
ich habe folgendes Problem. Ich möchte mit Codesys V3 eine CSV Datei einlesen und verarbeiten. Das Programm soll die einzelnen Zeichen der Datei durchgehen und diese dann in einen weiteren String schreiben. Ich habe mir das Beispiel "File utilities" angeschaut aber damit komme ich nicht ganz zurecht.
Ich habe folgendes Programm erstellt, dieses Funktioniert nur bedingt. Es werden in ReadBuffer die werte eingelesen, aber dann nicht in Buffer geschrieben. Woran könnte das liegen?
Mit der ersten Anweisung machst du den ReadBuffer leer (ist ja richtig), aber dann mußt du erst lesen und dann das gelesene Zeichen in den ReadBuffer übertragen.
Dummerweise sieht man im Status bei Schleifen nie den Zustand, der einen interessiert, sondern den letzten Durchlauf - das irritiert dann schon mal.....
Viel Erfolg
Alfred
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich habe folgendes Problem. Ich möchte mit Codesys V3 eine CSV Datei einlesen und verarbeiten. Das Programm soll die einzelnen Zeichen der Datei durchgehen und diese dann in einen weiteren String schreiben. Ich habe mir das Beispiel "File utilities" angeschaut aber damit komme ich nicht ganz zurecht.
Ich habe folgendes Programm erstellt, dieses Funktioniert nur bedingt. Es werden in ReadBuffer die werte eingelesen, aber dann nicht in Buffer geschrieben. Woran könnte das liegen?
PROGRAM PLC_PRG
VAR
myTON : TON;
SysFileOpenNum : DWORD;
FileName : STRING := 'C:\CSV.csv';
ReadBuffer : STRING;
Buffer : STRING;
pResult : WORD;
pResult_1 : WORD;
DwWritten : DWORD;
myCount : INT;
END_VAR
myTON(IN:=NOT myTON.Q, PT:=T#1S); ( Sekunden oszi )
IF myTON.Q THEN
END_IF
anbei habe ich noch ein Bild mit dem Problem angefügt.
Hallo Cobra123!
So wie ich das sehe, mußt du die zwei Zeilen tauschen:
ReadBuffer:='';
DwWritten := SysFileRead(SysFileOpenNum, ADR(ReadBuffer), LEN(ReadBuffer), pResult:= pResult_1);
Buffer := CONCAT(Buffer ,ReadBuffer);
Mit der ersten Anweisung machst du den ReadBuffer leer (ist ja richtig), aber dann mußt du erst lesen und dann das gelesene Zeichen in den ReadBuffer übertragen.
Dummerweise sieht man im Status bei Schleifen nie den Zustand, der einen interessiert, sondern den letzten Durchlauf - das irritiert dann schon mal.....
Viel Erfolg
Alfred