SKript_Daten schreiben

ka1978

Level-1
Beiträge
139
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe den Skrit PC auf meine Rechner getestet, es funktioniert soweit super, und ich habe diesen Code für Panel angepasst
und ich habe momentan leider kein Panel zur verfügung zum testen. Darum frage ich den Experten ob der Code richtig angepasst?


[CODE------------------Panel------------------------------------
Dim f,fs,Datei,Datum,strHeader,strDatenzeile
On Error Resume Next
Set f=CreateObject("filectl.file")
Set fs=CreateObject("filectl.filesystem")
'---------Verzeichnis erstellen--------------------
If fs.dir("Storage Card MMC\Ordner")="" Then fs.mkdir("Storage Card MMC\Ordner")
'---------Daten auf MMC schreiben----------
Datei = "\Storage Card MMC\Ordner\werte.csv"
Datum= "20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)
strHeader="Datum;"&"Uhrzeit;"&"Wert_B1[°C];"&"wert_B2[°C]
strDatenzeile=CStr(Date)& ";" &CStr(Time)&";"& SmartTags("DB_Mess.wert_B1")&";"& SmartTags("DB_Mess.wert_B2")
If SmartTags ("Var_Script_Start")= True Then
If fs.dir("Datei")="" Then

f.open Datei,2
f.LinePrint "Prozesswerte"
f.LinePrint strHeader
f.LinePrint strDatenzeile

Else

f.open Datei,8
f.LinePrint strDatenzeile

End If

End If
------------------------------------------------------------
---------------------PC-------------------------------------
Dim f,fs,fso,Datei,Datum,strHeader,strDatenzeile,textfile1
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = CreateObject("WScript.Shell")
'---------Verzeichnis erstellen--------------------
If Not fso.FolderExists("C:\Ordner") Then fso.CreateFolder("C:\Ordner")
'---------Daten im MMC schreiben----------
Datei = "C:\Ordner\werte.csv"
Datum= "20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)
strHeader="Datum;"&"Uhrzeit;"&"Wert_B1[°C];"&"wert_B2[°C]
strDatenzeile=CStr(Date)& ";" &CStr(Time)&";"& SmartTags("DB_Mess.wert_B1")&";"& SmartTags("DB_Mess.wert_B2")
If SmartTags ("Var_SCript_Start")= True Then

If Not fso.FileExists (Datei) Then
Set textfile1 = fso.CreateTextFile(Datei, True)

textfile1.WriteLine "Prozesswerte"
textfile1.WriteLine strHeader
textfile1.WriteLine strDatenzeile

Else

If fso.FileExists (Datei) Then
Set textfile1 = fso_OpenTextFile(Datei, 8)
textfile1.WriteLine strDatenzeile
End If

End If

End If ][/CODE]
 
Hallo,

Also ich habe heute den Code am Panel getestet, leider es hat nicht geklappt. es wird nur eine Zeile geschrieben.
was ist im obigen Code (Panel) falsch geschrieben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das hier Dein Skript? (das hat zwar Fehler, die passen aber eigentlich nicht zu Deiner ungenauen Fehlerbeschreibung)
Code:
'------------------Panel------------------------------------
Dim f,fs,Datei,Datum,strHeader,strDatenzeile
On Error Resume Next
Set f=CreateObject("filectl.file")
Set fs=CreateObject("filectl.filesystem")
'---------Verzeichnis erstellen--------------------
If fs.dir("Storage Card MMC\Ordner")="" Then fs.mkdir("Storage Card MMC\Ordner")
'---------Daten auf MMC schreiben----------
Datei = "\Storage Card MMC\Ordner\werte.csv"
Datum= "20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)
[COLOR="#FF0000"]' strHeader="Datum;"&"Uhrzeit;"&"Wert_B1[°C];"&"wert_B2[°C]  <-- hier fehlt ein "[/COLOR]
strHeader="Datum;Uhrzeit;Wert_B1[°C];wert_B2[°C]" [COLOR="#008000"]' <-- so ist besser[/COLOR]
strDatenzeile=CStr(Date)& ";" &CStr(Time)&";"& SmartTags("DB_Mess.wert_B1")&";"& SmartTags("DB_Mess.wert_B2")
If SmartTags ("Var_Script_Start")= True  Then
[COLOR="#FF0000"]' If  fs.dir("Datei")="" Then  <-- hier muß Datei ohne ""[/COLOR]
  If  fs.dir(Datei)="" Then  [COLOR="#008000"]' <-- so ist besser[/COLOR]
    
    f.open Datei,2
    f.LinePrint "Prozesswerte"
    f.LinePrint strHeader
    f.LinePrint strDatenzeile
   
  Else 
    
    f.open Datei,8 
    f.LinePrint strDatenzeile
     
  End If
 
End If

PS: gibt es auf Deinem Panel eine Datei, die "Datei" heißt?

Harald
 
Ich glaube das Close wird sowieso überbewertet ;) seine PC-Version hat auch kein Close aber "funktioniert soweit super".
Scheinbar gibt es in dem VBS ein Auto-Close? (so wie die Objekte wieder freigegeben werden)

Ich schätze, ein paar Fehler sind vielleicht durch ein gekürztes Abtippen für das Forum reingekommen. Die fehlenden " bei strHeader fehlen auch bei der "super funktionierenden" PC-Version. Die WinCCflex-Skriptprüfung meckert das aber immer als Fehler an. Wenn das Skript im Projekt verwendet wird, dann läßt auch der Projekt-Generator diesen Fehler nicht durchgehen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es gibt auf meinem Panel keine Datei, die "Datei" heißt. Es wird erstellt, wenn erstellt, wenn der Skript ausgeruffen wird, oder liege ich falsch?

ich werde die Fehler Korrigieren und versuchen, ob es klappen wird.

Die Close , wo wird im Programm eingeführt werden.
 
öffnen
schreiben
schließen.

Du schreibst es wird nur eine Zeile geschrieben. Welche? mit Open als Write oder mit Open als Append?
Wenn dein Panel Fileexists unterstützt ist dies besser als if .dir(...)="" / If (objFSO.FileExists(File)) then
Grüsse Holger
 
es gibt auf meinem Panel keine Datei, die "Datei" heißt. Es wird erstellt, wenn erstellt, wenn der Skript ausgeruffen wird, oder liege ich falsch?
Du hast aber eine Variable names "Datei" deklariert in der du den Dateiname im String-Format zwischenspeicherst.
Code:
Dim f,fs,[COLOR=#ff0000][B]Datei[/B][/COLOR],Datum,strHeader,strDatenzeile
...
[B][COLOR=#ff0000]Datei = "\Storage Card MMC\Ordner\werte.csv"[/COLOR][/B]
Sofern dein Code also richtig funktioniert sollte beim Skriptaufruf, sofern nicht schon vorhanden, die Datei "werte.csv" im Order "Ordner" erstellt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es gibt auf meinem Panel keine Datei, die "Datei" heißt.
Die Frage hatte ich gestellt, weil Du schriebst, Dein Skript würde nur 1 Zeile schreiben - das habe ich mal so interpretiert, daß Du die Datenzeile meinst, daß also nie der Header geschrieben wird. Dies wäre in dem vorliegenden Skript nur möglich, wenn die Abfrage If fs.dir("Datei")="" nicht erfüllt ist, d.h. wenn eine Datei mit dem Name "Datei" gefunden wird. Möglicherweise hast Du ja durch einen Fehler in einem anderen Skript diese Datei auf dem Panel erzeugt ... prüfe das mal.

Die Close , wo wird im Programm eingeführt werden.
Geht es bei Dir immer noch um das MP377 12" Touch?
In Deinem Thread Skript Error hatten wir den Fehler mit dem "Datei" doch schon korrigiert und da waren auch die Close noch vorhanden.

Harald
 
es wird der Datenzeile und nur eine Messung, jede Minute wird die Neue Messung der Vorherige messung ersetz.
ich habe vorher das Problem falsch interpretiert.
Sorry für diese Missverständnis
 
Hallo,

Also mit dem Schreiben und Kopieren von Daten hat es endlich mal funktioniert. Aber das Löschen von Daten auf MMCard hat es bis jetzt nicht geklappt.

Zum Testen , ob es an MM Card liegt , habe ich den MMC Card durch ein USB gesetzt und getestet, das Schreiben sowie Kopieren funktioniert auch. aber das

Löschen funktionier nicht. ich habe den Skript (Löschen) angepasst und im PC getestet und es funktioniert. hat jemand einen Vorschlag?
Code:
--------------Skript Datei löschen -----------
----------------------------------------------
------------------Panel-----------------------
----------------------------------------------
On Error Resume Next
Dim f,fso,Datei
Set fso = CreateObject("FileCtl.FileSystem")
Datei="\Storage Card MMC\Test\Messungen.csv"
 If fso.Dir(Datei) <> "" Then fso.Kill Datei
 
Set fso= Nothing
ShowSystemAlarm "Datei gelöscht"

----------------------------------------------
------------------PC--------------------------
----------------------------------------------
Dim fso,Datei

Set fso = CreateObject("Scripting.FileSystemObject")
Datei = "C:\Test\Messungen.csv"
 
If fso.FileExists(Datei) Then fso.DeleteFile Datei

Set fso= Nothing
ShowSystemAlarm "Datei gelöscht"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es Fehlermeldungen? (Kannst Du Systemmeldungen sehen?)
Ist die csv-Datei vielleicht noch geöffnet? In einem anderen Skript das Close vergessen?

Mache Dir ein Testskript, wo Du mehr sehen kannst:
Code:
Dim fso, Datei
Set fso = CreateObject("FileCtl.FileSystem")
Datei="\Storage Card MMC\Test\Messungen.csv"
If fso.Dir(Datei) <> "" Then
  ShowSystemAlarm "Datei '" & Datei & "' vorhanden - versuche zu löschen"
  fso.Kill Datei
  ShowSystemAlarm "Datei '" & Datei & "' vermutlich gelöscht"
Else
  ShowSystemAlarm "Datei '" & Datei & "' nicht gefunden - kann deshalb nicht löschen"
End If

Harald
 
Nach ich die Taste Daten löschen betätige, wird der Skript (Löschen) aufgerufen , danach bekomme ich als meldung : Datei gelöscht.

Der Skript "Daten schreiben" wird minutlich aufgerufen.
 
Das heißt ja nur, daß Dein Skript bis zur Meldungsausgabe am Ende gekommen ist. Egal ob der Kill-Befehl überhaupt aufgerufen wurde.
Wo war nochmal Dein Problem? Das Skript meldet "Datei gelöscht" aber die Datei ist nachher immer noch da (oder schon wieder?) ?

Da man auf einem Panel nicht wirklich debuggen kann, muß man sich halt selber an markanten Programmpunkten Testausgaben einbauen um den Programmablauf verfolgen zu können. Benutze mal das von mir vorgeschlagene Testskript. Vor allem lasse mal das "On Error Resume Next" weg.

Harald
 
Zurück
Oben