zur Zeit lassen die "Probleme" bei mir nicht locker.
Ich habe eine kleine Schaltung zum Zählen meines Stromzählers realisiert.
Das funktioniert soweit auch ohne Probleme.
Diese Zählwerte/Impulse schreibe ich in ein Array [1..1440] of UINT. Dieses Array möchte ich täglich und automatisiert auf mein raspi abspeichern.
Es funktioniert im Prinzip alles bis auf das Entscheidende. Es wird nur der 1ste Wert vom Array gespeichert. Alle anderen Werte werden nicht mitgeschrieben.
Lt. der Beschreibung von SysFileWrite ist es aber egal was angelegt wird, im Gegenteil, als Beispiel ist sogar ein Array aufgeführt.
Muss ich hier SysFileWrite pro Array-Eintrag einzeln aufrufen oder habe ich hier in der Addressierung etwas falsch?
Hier der Code:
Deklaration:
  //SpeicherarrayalsStringanlegen  chSpeicherdaten: ARRAY[1..1440]OFSTRING(5);;  iStringLoop:INT;   Â
Programmcode:
CASEiCaseZeigerOF
 Â
1: //Dateinamenerzeugen Â
  sFileName:=CONCAT(sSpeicherpfad, CONCAT('Tagesdaten vom: ', CONCAT(DT_TO_STRING(todZeitstempel), '.txt')));
  iCaseZeiger:=2;
 Â
2: //Stringerzeugen
  FORiStringLoop:=1TO1440BY1DO
    chSpeicherdaten[iStringLoop]:=CONCAT(UINT_TO_STRING(aSpeicherDaten.aMinuten[iStringLoop]), '; ');                 Â
  END_FOR
  iCaseZeiger:=3;
 Â
3:Â //Dateiincl. Pfaderzeugen
  returnFileMake:=SysFileOpen(szFile:=sFileName , am:=SysFile.AM_WRITE_PLUS , pResult:=ADR(resultFileCheck));Â
  IFresultFileCheck=16#0THEN
    iCaseZeiger:=4;
  END_IF
 Â
4: //DateiSchreibzugriffgeben
  sCommandChMod:=CONCAT('sudo chmod 0777 ',sSpeicherpfad,); Â
  SysProcess._(pszComand:=sCommandChMod , pResult:=ADR(resultSysComChMod)); Â
  //Resultkönnennichtausgewertetwerden. ObderOrdnerdenrichtigenzugriffhatmussvonHANDgeprüftwerden Â
  IFresultSysComChMod=0ORresultSysComChMod=25THEN Â
    iCaseZeiger:=5;
  END_IF
 Â
5: //DatenindieDateischreiben
  //1stenund2tenWertzumTestbeschreiben
  chSpeicherdaten[1]:='100';
  chSpeicherdaten[2]:='102';
  returnFileMake:=SysFileOpen(szFile:=sFileName , am:=SysFile.AM_WRITE_PLUS , pResult:=ADR(resultFileCheck));Â
  returnFileWrite:=SysFileWrite(hFile:=returnFileMake ,
                pbyBuffer:=ADR(chSpeicherdaten) ,
                ulSize:=(SIZEOF(chSpeicherdaten)) ,
                pResult:=ADR(resultFileWrite));
  IFresultFileWrite=16#0ANDreturnFileWrite>0THEN
    iCaseZeiger:=6;
  END_IF
 Â
6: //Dateischließen
  returnFileClose:=SysFileClose(hFile:=returnFileMake);
  IFreturnFileClose<>SINT_TO_UDINT(-1)THEN
    iCaseZeiger:=7;
  END_IF
 Â
7: //Ende
  iCaseZeiger:=0;
  xDateiSpeichern:=FALSE;
  xDone:=TRUE;
Auch hier möchte ich noch kurz erläutern woran es gelegen hat.
Die Datei wurde immer richtig geschrieben.
Wenn man sie jedoch mit dem WinSCP "Reader" (also dem integrierten Editor) öffnet, wird nur der 1ste Eintrag angezeigt.
Mit Excel oder Notepad++ funktioniert alles einwandfrei.
Gruß
Wastl
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo zusammen,
zur Zeit lassen die "Probleme" bei mir nicht locker.
Ich habe eine kleine Schaltung zum Zählen meines Stromzählers realisiert.
Das funktioniert soweit auch ohne Probleme.
Diese Zählwerte/Impulse schreibe ich in ein Array [1..1440] of UINT. Dieses Array möchte ich täglich und automatisiert auf mein raspi abspeichern.
Es funktioniert im Prinzip alles bis auf das Entscheidende. Es wird nur der 1ste Wert vom Array gespeichert. Alle anderen Werte werden nicht mitgeschrieben.
Lt. der Beschreibung von SysFileWrite ist es aber egal was angelegt wird, im Gegenteil, als Beispiel ist sogar ein Array aufgeführt.
Muss ich hier SysFileWrite pro Array-Eintrag einzeln aufrufen oder habe ich hier in der Addressierung etwas falsch?
Hier der Code:
Deklaration:
Programmcode:
Related
Talk.ru: 1
Talk.ru: 2
Auch hier möchte ich noch kurz erläutern woran es gelegen hat.
Die Datei wurde immer richtig geschrieben.
Wenn man sie jedoch mit dem WinSCP "Reader" (also dem integrierten Editor) öffnet, wird nur der 1ste Eintrag angezeigt.
Mit Excel oder Notepad++ funktioniert alles einwandfrei.
Gruß
Wastl