[#include "apdefap.h"
int gscAction( void )
{
#define MaxLineLength 80
char FILE
Filename_Logfile_Durchflüsse; "d:/Durfluesse.csv";
FILE *fpFile;
char *strTag[3] = {"WF_Beereben_Q_Restwasser", "WF_Karbach_Q_Restwasser", "WF_Gaisbach_Q_Restwasser" };
char *pTmp;
char buffer[MaxLineLength];
double dVal;
int i;
fpFile = fopen(GetTagChar("Filename_Logfile_Durchflüsse"), "w+" ); //open file to write
printf ("C-Script: write file: %s\r\n", GetTagChar("Filename_Logfile_Durchflüsse"));
if (fpFile !=NULL)
{
for (i=0; i<=2; i++){
dVal = GetTagDouble(strTag[i]);
sprintf(buffer, "%s;%lf\n", strTag[i],dVal);
// Search for '.' and replace with ','
pTmp = strchr(buffer, (int)'.');
if (pTmp != NULL){
*pTmp = ',';
}
fputs(buffer,fpFile);
printf("%s\r\r\n", buffer);
}
fclose(fpFile); //close file
} else {
printf ("Error: File not found!\r\n");
}
return 0;
}
/CODE]
bringt mir aber jede Menge Fehler:
[ATTACH=CONFIG]49385._xfImport[/ATTACH]
hab testweise mal FILE schon als Char definiert.
Ich hab mit Scripten keinerlei Erfahrung.
Wer kann mir da bitte etwas unter die Arme Greifen.
Danke im Voraus
Winnman
PS, Hab da auch noch ein paar andere Probleme:
Wie kann ich für WEB Kameras eine Crome Browser Fenster aufmachen und dann gleichzeitig Passwort für die Kamera übergeben (hab den eingebauten "Explorer probiert, da mault aber die Kamera das die nur mit ektuellem Crome, Firefox, . . . funktioniert
Wie kann ich über einen Button ein Excel File öffnen? mit execute hab ich das Probiert, da passiert aber genau gar nichts (muss ich ev. den Pfad/Filnamen in einer speziellen Form eingeben?)
Das rote ergibt in C keinen Sinn.Code:#include "apdefap.h" int gscAction( void ) { #define MaxLineLength 80 [COLOR="#FF0000"]char FILE Filename_Logfile_Durchflüsse; "d:/Durfluesse.csv";[/COLOR]
[COLOR="#0000FF"]SetTagChar("Filename_Logfile_Durchflüsse","d:/Durfluesse.csv");[/COLOR]
FILE *fpFile;
//...
int i;
fpFile = fopen(GetTagChar("Filename_Logfile_Durchflüsse"), "w+" ); //open file to write
printf ("C-Script: write file: %s\r\n", GetTagChar("Filename_Logfile_Durchflüsse"));
Weiß ich.Die Wait-Funktionen sollte man nur in absoluten Ausnahmefällen verwenden.
Andererseits: wie stellt man sicher, daß der Wert der verwendeten Tags vor dem Schreiben in die csv-Datei aktualisiert ist? Er will nur alle 15 Minuten die Werte von 3 Variablen schreiben.
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#define MaxLineLength 80
FILE *fpFile;
char *strTag[5] = { "TagA", "TagB", "TagC", "TagD", "TagE" };
char *pTmp;
char buffer[MaxLineLength];
double dVal;
int i;
fpFile = fopen(GetTagChar("Filename"), "w+" ); //open file to write
printf ("C-Script: write file: %s\r\n", GetTagChar("Filename"));
if (fpFile !=NULL)
{
for (i=0; i<=4; i++){
dVal = GetTagDouble(strTag[i]);
sprintf(buffer, "%s;%lf\n", strTag[i],dVal);
// Search for '.' and replace with ','
pTmp = strchr(buffer, (int)'.');
if (pTmp != NULL){
*pTmp = ',';
}
fputs(buffer,fpFile);
printf("%s\r\r\n", buffer);
}
fclose(fpFile); //close file
} else {
printf ("Error: File not found!\r\n");
}
}
fpFile = fopen(GetTagChar("Filename_Logfile_Durchfluesse"), "a" ); //open file for append
// WINCC:TAGNAME_SECTION_START
#define TAGDATEINAME "intern_8BitTextTag_DateinameMitPfad"
#define TAG01 "Var01"
#define TAG02 "Var02"
#define TAG03 "Var03"
#define TAG04 "Var04"
#define TAG05 "Var05"
#define TAG06 "Var06"
#define TAG07 "Var07"
#define TAG08 "Var08"
#define TAG09 "Var09"
#define TAG10 "Var10"
#define TAG11 "Var11"
#define TAG12 "Var12"
#define TAG13 "Var13"
#define TAG14 "Var14"
#define TAG15 "Var15"
// WINCC:TAGNAME_SECTION_END
double val[15];
char* pDateiname;
long int size;
BOOL ok;
FILE* pFile;
ok = GetTagMultiWait("%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f",
TAG01, &val[0],
TAG02, &val[1],
TAG03, &val[2],
TAG04, &val[3],
TAG05, &val[4],
TAG06, &val[5],
TAG07, &val[6],
TAG08, &val[7],
TAG09, &val[8],
TAG10, &val[9],
TAG11, &val[10],
TAG12, &val[11],
TAG13, &val[12],
TAG14, &val[13],
TAG15, &val[14]
);
// ok wertet nicht aus ob die Variablen wirklich aus der SPS gelesen werden konnte, sondern nur ob die Funktion ausgeführt werden konnte
if (!ok) {
printf("Fehler: GetTagMultiWait Aufruf war nicht erfolgreich!\n");
} else {
// Datei verarbeiten
pDateiname = GetTagChar(TAGDATEINAME);
if (pDateiname) {
pFile = fopen(pDateiname, "a");
if (pFile) {
fseek(pFile, 0, SEEK_END);
size = ftell(pFile);
// Wenn Dateigroesse 0, dann Header schreiben
if (size == 0) {
fprintf(pFile, "%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n",
TAG01, TAG02, TAG03, TAG04, TAG05, TAG06, TAG07, TAG08,
TAG09, TAG10, TAG11, TAG12, TAG13, TAG14, TAG15);
}
fprintf(pFile, "%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f\n",
val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7],
val[8], val[9], val[10], val[11], val[12], val[13], val[14]);
fclose(pFile);
printf("Erfolg: Die Daten wurden in Datei '%s' geschrieben\n", pDateiname);
} else {
printf("Fehler: Die Datei '%s' konnte nicht geoeffnet werden!\n", pDateiname);
}
} else {
printf("Fehler: Dateiname konnte mit GetTagChar nicht gelesen werden!\n");
}
}
Wie kann ich für WEB Kameras eine Crome Browser Fenster aufmachen und dann gleichzeitig Passwort für die Kamera übergeben (hab den eingebauten "Explorer probiert, da mault aber die Kamera das die nur mit ektuellem Crome, Firefox, . . . funktioniert
Option Explicit
Function actionDim mDatum_Zeit
Dim Datum_Zeit
Dim Jahr
Dim Monat
Dim Tag
Dim Stunde
Dim Minuten
Datum_Zeit = Now
Set mDatum_Zeit = HMIRuntime.Tags("iDatum_Zeit")
mDatum_Zeit.Read
mDatum_Zeit.Value = Datum_Zeit
mDatum_Zeit.Write
Set Jahr = HMIRuntime.Tags("iJahr")
Jahr.Read
Jahr.Value = Year(Now)
Jahr.Write
Set Monat = HMIRuntime.Tags("iMonat")
Monat.Read
Monat.Value = Month(Now)
Monat.Write
Set Tag = HMIRuntime.Tags("iTag")
Tag.Read
Tag.Value = Day(Now)
Tag.Write
Set Stunde = HMIRuntime.Tags("iStunde")
Stunde.Read
Stunde.Value = Hour(Now)
Stunde.Write
Set Minuten = HMIRuntime.Tags("iMinute")
Minuten.Read
Minuten.Value = Minute(Now)
Minuten.Write
'HMIRuntime.Trace "OK geschrieben " & Datum_Zeit & " " & vbCrLf 'für testzwecke
End Function
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
#define TAGDATEINAME "Filename_Logfile_Durchfluesse"
#define TAG01 "iDatum_Zeit"
#define TAG02 "iJahr"
#define TAG03 "iMonat"
#define TAG04 "iTag"
#define TAG05 "iStunde"
#define TAG06 "iMinute"
#define TAG07 "WF_Gaisbach_Q_Restwasser"
#define TAG08 "WF_Gaisbach_Q_Restwasser"
#define TAG09 "WF_Gaisbach_Q_Restwasser"
#define TAG10 "WF_Gaisbach_Q_Restwasser"
#define TAG11 "WF_Gaisbach_Q_Restwasser"
#define TAG12 "WF_Gaisbach_Q_Restwasser"
#define TAG13 "WF_Beereben_Q_Restwasser"
#define TAG14 "WF_Karbach_Q_Restwasser"
#define TAG15 "WF_Gaisbach_Q_Restwasser"
// WINCC:TAGNAME_SECTION_END
double val[15]; //Anzahl anpassen!
double iMinute;
char* pDateiname;
long int size;
BOOL ok;
FILE* pFile;
SetTagChar("Filename_Logfile_Durchfluesse","d:\\durchfluesse.csv"); //Return-Type: BOOL
iMinute = GetTagDouble("iMinute"); //Return-Type: double
if (iMinute == 0 || iMinute == 15 || iMinute == 30 || iMinute == 45 ) //soll nur bei ganzer 1/4 Stunde den Rest ausführen
{
ok = GetTagMultiWait("%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f",
TAG01, &val[0],
TAG02, &val[1],
TAG03, &val[2],
TAG04, &val[3],
TAG05, &val[4],
TAG06, &val[5],
TAG07, &val[6],
TAG08, &val[7],
TAG09, &val[8],
TAG10, &val[9],
TAG11, &val[10],
TAG12, &val[11],
TAG13, &val[12],
TAG14, &val[13],
TAG15, &val[14]
);
// ok wertet nicht aus ob die Variablen wirklich aus der SPS gelesen werden konnte, sondern nur ob die Funktion ausgeführt werden konnte
if (!ok) {
printf("Fehler: GetTagMultiWait Aufruf war nicht erfolgreich!\n");
} else {
// Datei verarbeiten
pDateiname = GetTagChar(TAGDATEINAME);
if (pDateiname) {
pFile = fopen(pDateiname, "a");
if (pFile) {
fseek(pFile, 0, SEEK_END);
size = ftell(pFile);
// Wenn Dateigroesse 0, dann Header schreiben
if (size == 0) {
fprintf(pFile, "%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n",
TAG01, TAG02, TAG03, TAG04, TAG05, TAG06, TAG07, TAG08,
TAG09, TAG10, TAG11, TAG12, TAG13, TAG14, TAG15);
}
fprintf(pFile, "%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f\n",
val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7],
val[8], val[9], val[10], val[11], val[12], val[13], val[14]);
fclose(pFile);
printf("Erfolg: Die Daten wurden in Datei '%s' geschrieben\n", pDateiname);
} else {
printf("Fehler: Die Datei '%s' konnte nicht geoeffnet werden!\n", pDateiname);
}
} else {
printf("Fehler: Dateiname konnte mit GetTagChar nicht gelesen werden!\n");
}
}
}
else {
printf("keine volle 1/4 Stunde \n"); //zu Tetzwecken wenn es öfter aufgerufen wird
}
return 0;
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?