Array (Feld) in Datei oder Textdatei schreiben und auslesen

O

omignobi

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich arbeite mit der WinCC Version 5.1 .

Ich habe in meinem WinCC Programm als C Code das folgende Feld als lokale Variablen angelegt:
WORD feld[15][531]
Dieses wird einmalig dynamisch mit Werten von der CPU beschrieben. Wenn ich nun die WinCC Runtime neu starte dann ist der Inhalt dieses Feldes natürlich verloren. Deshalb möchte ich diesen Inhalt in eine Datei speichern und beim nächsten WinCC Runtime Anlauf wieder auslesen.
Die Datei sollte beim ersten mal speichern auch noch automatisch erstellt werden.

Kann mir da jemand helfen
 
Hallo,
Da WinCC mit VBScript läuft (ich allerdings noch nicht das Vergnügen hatte, auf Dateien zurückgreifen zu müssen), hier mein Ansatz als VBScript-Variante:

Code:
Dim FSO, File, Element, Data

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.CreateTextFile("values.dat")
Data = Array("NameSource1", "NameSourceN")

For Each Element In Data
	File.WriteLine(CStr(Element))
Next

File.Close

Keine Ahnung, ob es funktioniert. Habe leider gerade kein Panel zum ausprobieren hier.
Code:
 
Hallo

Hier sind zwei Funktionen zum Schreiben und Lesen des Arrays. Die Methode ist zwar nicht rasend schnell, im Allgemeinen aber ausreichend.
Code:
void WriteArray(void)
{

	char *FileName = "C:\\Temp\\Array.dat";
	WORD 	feld[15][531];
	FILE	*myfile;
	int		i, j;

	myfile = fopen (FileName, "w");
	if (myfile == NULL)
	{
		printf ("Error WriteArray: fopen() !\n");
		return;
	}

	for (i=0; i<15; i++)
		for (j=0; j<531; j++)
			fprintf(myfile, "%x\n", feld[i][j]);

	fclose(myfile);
	return;
}

Code:
void ReadArray(void)
{

	char *FileName = "C:\\Temp\\Array.dat";
	WORD 	feld[15][531];
	FILE	*myfile;
	int	i, j;
	WORD x;

	myfile = fopen (FileName, "r");
	if (myfile == NULL)
	{
		printf ("Error ReadArray: fopen() !\n");
		return;
	}

	for (i=0; i<15; i++)
		for (j=0; j<531; j++)
		{
//			fscanf(myfile, "%x", &feld[i][j]);
			fscanf(myfile, "%x", &x);
			feld[i][j] = x;
		}
	fclose(myfile);
	return;
}

Warum die auskommentierte Zeile in der Lesefunktion (Alternative zu den beiden folgenden) einen GP-Fehler erzeugt ist mir nicht klar. Vielleicht kann mich jemand aufklären?

Ulf
 
Zurück
Oben