Loxone Remanent-Speicher

Zum dauerhaften Speichern und wieder abrufen von mehreren Werten haben wir folgenden Baustein selbst in Picoc Programmiert:

// write program here in PicoC
float input0,input1,input2; //Input 0 = [0=inaktiv, 1 = Lesen 2 = Schreiben]//Input 1 = Wert // Input 2 = Datenfeld Variable
float out0,out1; //Output0 = Status [0=inaktiv, 1=läuft bzw. in Arbeit; 2=Done; 9=Fehler]; Output1 = Daten
char str1[20]; //Daten
char str2[20]; // Adresse
char buffer[20]; //Char zum rücklesen
FILE *fp; // Erstelle einen Filepointer


while(TRUE)

{
input0 = getinput(0); // Nichts tun = 0; Read = 1; Write = 2
input1 = getinput(1); // Daten
input2 = getinput(2); // Array nummer



//———– Fehler ————
if (input0 < 0 || input0 > 2){
out0 = 9;
}


//———– Reset ————
if(input0 == 0){
out0 = 0; // Inatktiv
out1 = 0;
}


//———– Lesen ————
if(input0 == 1){
//Clear Buffer
memset(&buffer[0], 0, sizeof(buffer));
// Umwandlung Int into String
sprintf(str1, “%f”, input1);
sprintf(str2, “%f”, input2);
// Open a file in reading mode
fp = fopen(str2,”r”);
// Read the file
fread(buffer,10,1,fp);
// Creat String out of array
out1 = batof(buffer); // Convert string to int
// Close the file
fclose(fp);
out0 = 2; // Fertig
}

//———– Schreiben ————
if(input0 == 2){
// Umwandlung Int into String
sprintf(str1, “%f”, input1);
sprintf(str2, “%f”, input2);
// Open a file in writing mode
fp = fopen(str2,”w”);
// Write some text to the file
fprintf(fp, str1);
// Close the file
fclose(fp);
out0 = 2; // Fertig
}


setoutput(0,out0);
setoutput(1,out1); // Daten an den Ausgang
sleep(1000);
}