Daten von Touch Panel auf dem Rechner archivieren

buba1983

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Schön guten Tag!

Ich drehe langsam am Rad...

Ich möchte meine Daten von dem Touch Panel auf dem Rechner über ein Netzwerk ablegen bzw. archivieren...
Wenn ich mein Programm zum testen auf dem Rechner starte, funktioniert das ganze und die Daten werden auf dem Rechner abgelegt..

aber wenn ich mein Projekt auf dem Touch Panel starte und möchte die Daten archivieren passiert garnichts...

mein Skriptfile für die archivierung sieht folgendermaßen aus:




Dim FName, fso, DataSet

FName = \\sps\Ordner\Daten.txt

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FileExists(FName) Then
fso.CreateTextFile FName
End If

DataSet = "Momentaner Druck: " & ";" & SmartTags("pressure")
Set fout = fso_OpenTextFile(FName,8, True)
fout.WriteLine(DataSet)
fout.Close


was ich nicht verstehe, wieso das ganze auf dem rechner zum testzwecken funktioniert und wenn ich das in der anlage ausprobieren möchte geht das nicht..

der zugriff auf das netzwerk ist vorhanden

habe ich vielleicht was übersehen, brauche unbedingt hilfe

Vielen Dank im Voraus!!!!!!!!!!!!!!!
 
Zuletzt bearbeitet:
Ist es ein CE System, dann ist der Befehlsvorrat anders als beim normalen Rechner. Das dateihandling ist anders, da gab es aber schon Beiträge im Forum.
 
ja bei mir funktioniert ja alles und ich sehe auch den ordner den ich auf dem rechner freigegeben habe, aber sobald ich von Touch panel was archivieren möchte passiert garnicht, auf dem rechner ist das kein problem ich drücke den Button und die datei escheint in dem ordner sofort....
wie gesagt auf dem tp passiert garnicht....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Skript-Beispiele

wie gesagt auf dem tp passiert garnicht....
Ist es genau das selbe WCCf-Projekt, das Du testest?
Mal auf das MP270 transferiert, mal als Runtime bzw. im Simulator auf dem PC gestartet?

Wenn Dein Skript auf dem MP270 tatsächlich gestartet wird, dann muß eine Systemmeldung etwa
in der Art "ActiveX konnte nicht erstellt werden..." kommen.

Das ActiveX-Objekt "Scripting.FileSystemObject" gibt es auf dem MP270 nicht (WinCE),
sondern nur auf Deinem PC (irgendein Win32).

Wenn Du die Meldung nicht siehst, mach in ein Bild eine Meldeanzeige rein
und/oder mach in die Vorlage ein Meldefenster rein für die Meldeklasse "System".

Unbedingt lesen:
FAQ: Protool/WinCCflex Daten lesen / schreiben mit VB-Script
siehe da besonders die unten angehängte VBScript_WinCE.pdf

Der Link in #3 von Ralle hätte Dich auch dahin geführt.
Siehe bitte dazu z.Bsp. diesen aktuellen Thread: http://www.sps-forum.de/showthread.php?t=30324
Ab Beitrag #8 wird es für Dich interessant.

Hier mal ein Beispiel, wie Panel-Variablen in eine INI-Datei gespeichert werden können.
Weil ich meine Panel-Projekte auch auf dem PC vollständig testen will, habe ich ein Settings-Bild
im Projekt, wo ich auf Panel und PC unterschiedliche Speicherpfade eingeben kann. Die Eingaben
speichere ich dann in eine INI-Datei, die beim Runtime-Start wieder gelesen wird.

Das Beispiel mußt Du natürlich für Deine Belange anpassen (prüfen ob Datei existiert, Append-Mode,
was ganz anderes in die Datei schreiben).

Beachte und vergleiche die unterschiedlichen Befehle, je nachdem, ob das Skript unter WinCE (MP270)
oder Win32 (PC-Windows) läuft.

Code:
' Sub SettingsIniSpeichern()
' SystemPfade und Einstellungen in Ini-Datei speichern
' Skript kann unter OP-WinCE und PC-Windows laufen
Const ForWriting = 2
Dim fso, f, inifile

inifile = "Settings.ini"
If Not FolderExist("\FLASH") Then
    ShowSystemAlarm "Ordner '\FLASH' nicht vorhanden. Kann '" & inifile & "' nicht speichern."
    Exit Sub
Else
    inifile = "\FLASH\" & inifile
    If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.CreateTextFile(inifile, True)
        f.WriteLine  "[WCF-RT Anlage1]"
        f.WriteLine  "path_CF-Card=" & SmartTags("_System\path_CF-Card")
        f.WriteLine  "path_Warte-PC=" & SmartTags("_System\path_Warte-PC")
        f.Close
    Else 'WinCE
        Set f = CreateObject("FileCtl.File")
        f.Open inifile, ForWriting
        f.LinePrint "[WCF-RT Anlage1]"
        f.LinePrint "path_CF-Card=" & SmartTags("_System\path_CF-Card")
        f.LinePrint "path_Warte-PC=" & SmartTags("_System\path_Warte-PC")
        f.Close
    End If
    ShowSystemAlarm "Systempfade in '" & inifile & "' gespeichert."
End If
Code:
' Function FolderExist(Path) prüft, ob ein angegebener Ordner existiert
' z.B. ob eine MemoryCard im angegebenen Slot steckt
' oder der angegebene Netzwerk-Pfad erreichbar ist
' Rückgabewert muß True/False sein!
' Skript kann unter OP-WinCE und PC-Windows laufen
' Path darf unter WinCE wildcards *? enthalten
' !!! unter WinCE führt ein Aufruf "If FolderExist(SmartTags("Strinvariable")) ..."
'     zu einem Runtim-Error "ungültiger Procedur-Call"
'     -> SmartTags("Strinvariable") muß explizit einer Skript-Variablen zugewiesen werden !!!
'     -> z.B. path = SmartTags("Strinvariable") : If FolderExist(path) ...  <- das funktioniert
'
Dim fso

FolderExist = False
If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists(Path) Then FolderExist = True
Else 'WinCE
    Set fso = CreateObject("FileCtl.FileSystem")
    If fso.Dir(Path) <> "" Then FolderExist = True
End If

Damit ich meine Panel-Projekte komplett unter Windows XP testen/simulieren kann,
habe ich im WCCflexible-Projekt eine interne Panel-Variable "_System\!_RT-Sim_!"
vom Typ Byte, deren Startwert ich auf 0 oder 1 festlege, je nachdem, ob die Runtime
auf dem Panel oder auf dem WinXP-Testsystem laufen soll:
0=RT auf WinCE-OP / 1=RT auf PC (Simulation/Test)

Gruß Harald
 
INI-Datei einlesen

Und hier das Einlesen der oben geschriebenen INI-Datei.
Beim Runtime-Start wird in einem Start-Skript aufgerufen: SettingsIniLaden 1
Und an einer "Laden"-Schaltfläche im Settings-Bild: SettingsIniLaden 0

Real werden in die INI-Datei noch viel mehr Werte geschrieben und wieder rausgelesen.

Code:
' Sub SettingsIniLaden(verbose)
' SystemPfade und Einstellungen aus Ini-Datei lesen
' Skript kann unter OP-WinCE und PC-Windows laufen
Const ForReading = 1
Dim fso, f, inifile

inifile = "\FLASH\Settings.ini"
If Not FileExist(inifile) Then
    If verbose = 0 Then ShowSystemAlarm "Datei '" & inifile & "' nicht gefunden."
    Exit Sub
Else 'Settings.ini ist vorhanden
    If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.OpenTextFile(inifile, ForReading, False)
        Do While f.AtEndOfStream = False
            SetSysVar f.ReadLine
        Loop
        f.Close
    Else 'WinCE
        Set f = CreateObject("FileCtl.File")
        f.Open inifile, ForReading
        Do While f.EOF = False
            SetSysVar f.LineInputString
        Loop
        f.Close
    End If
End If
Code:
' Sub SetSysVar(sline)
' zerlegt einen String der Art "varname = stringvalue" und weist dann varname den stringvalue zu
Dim field, varname, svalue

If sline = "" Then Exit Sub 'wg. Split()
field = Split(sline, "=")
If UBound(field) <> 0 Then ' "=" war enthalten, field(0): "varname ", field(1): " string"
    varname = Trim(field(0)) : svalue = Trim(field(1))
    Select Case varname
        Case "path_CF-Card"    SmartTags("_System\path_CF-Card") = svalue
        Case "path_Warte-PC"   SmartTags("_System\path_Warte-PC") = svalue
    End Select
End If
Code:
' Function FileExist(Path) prüft, ob die angegebene Datei vorhanden ist
' Rückgabewert muß True/False sein!
' Skript kann unter OP-WinCE und PC-Windows laufen
' Path darf unter WinCE wildcards *? enthalten
Dim fso

FileExist = False
If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(Path) Then FileExist = True
Else 'WinCE
    Set fso = CreateObject("FileCtl.FileSystem")
    If fso.Dir(Path) <> "" Then FileExist = True
End If

Gruß Harald
 
Zurück
Oben