# VBScript WinCE TP1200 Datenaustausch Server



## ant1994 (14 Oktober 2021)

Servus zusammen,

momentan bin ich dabei ein Skript zum laufen zu kriegen, um Daten aus einer CSV-Datei auf einen Server zu kopieren und dann die CSV auf einen zweiten Ordner auf der SD-Karte auszuschneiden und einzufügen

Ich nutze ein Tp1200 und meinen Rechner als "Server".

Die Verbindung ist hergestellt und die Daten werden auch übertragen, bzw ausgeschnitten, auch zum Server (Laptop).

Nun möchte ich jedoch, sollte die Verbindung zum Server im laufenden Betrieb abbrechen, die Daten nur von einem Speicherort zum anderen auf der SD-Karte ausschneiden. Wenn ich die Verbindung zum Laptop trenne, hängt sich meine Runtime am Panel auf und ich kann nichts mehr schreiben.
Nach dem Neustart wird alles wie gewünscht ausgeführt.

Meine Frage:
-Kann ich die Unterbrechung zum Server auswerten, wenn ja wie?
-Gibt es eine Lösung für ein solches Problem?
-Ist meine On Error Resume next Anwendung falsch?
-Funktionieren tut alles, bis ich die Serververbindung trenne..

!Meiner Meinung nach sucht das Panel nach der verloren gegangenen Serververbindung. Dies dauert zu lange und es hängt sich irgendwo auf.
Ich möchte kurz prüfen ob der Server erreichbar ist, wenn nicht soll er mit der weiteren Anwendung weiter machen.!

Codeschnippsel:


Set fso = CreateObject("FileCtl.FileSystem")

ShowSystemAlarm "Filesystem-ActiveX-Objekt wurde erstellt"

'Kopiervorgang auf Server
On Error Resume Next

fso.FileCopy "\von\".csv", "\\XXYY\zu\" & ".csv"

On Error Resume Next

ShowSystemAlarm "meinedatei.csv wurde auf den Server kopiert"

    'Datei wird auf der SD-Karte ausgeschnitten und verschoben

Set fso = CreateObject("FileCtl.FileSystem")

ShowSystemAlarm "Filesystem-ActiveX-Objekt wurde erstellt"

fso.MoveFile "\von\" & ".csv"    , "\zu\" & ".csv"

ShowSystemAlarm "meinedatei.csv wurde ausgeschnitten"


Codeschnippsel ende


----------



## erkoausbe (14 Oktober 2021)

Hallo ant1990,

ich habe mal so etwas ähnliches gemacht, um Daten aus der SPS auf einem Netzlaufwerk abzulegen.
Wenn das Netzlaufwerk nicht zur Verfügung stand, habe ich die Daten zunächst lokal auf einer SD-Karte abgelegt.
Das ist ja in etwa auch Deine Anwendung.

Zuerst prüfe ich, ob der Ablagepfad zur Verfügung steht. Das sieht dann in etwa so aus:

    Set F = CreateObject("FileCtl.Filesystem")
    Set fso = CreateObject("FileCtl.File")


    'Prüfen, ob Ablagepfad zur Verfügung steht
    'sonst zunächst auf USB-Stick / Flash / SD-Card verweisen
*If F.Dir(strPath , 16) = "" Then*
        'Ordner nicht vorhanden/Folder not exists
        'Also Ablage zunächst auf USB-Stick bzw. Flash
        'strPath = "\Storage Card USB"
        'strPath = "\Flash"
        strPath = "\Storage Card SD"
        strFileName = strFileBaseErr & strFileName
    Else
        'Wenn Ablagepfad ok, dann Dateien umkopieren

        'Ersten Dateinamen einlesen
        'x = F.Dir("\Storage Card USB\" & strFileBaseErr & Ext,0)
        'x = F.Dir("\Flash\" & strFileBaseErr & "*" & Ext,0)
        x = F.Dir("\Storage Card USB\" & strFileBaseErr & Ext,0)
        'Dateien verschieben und nächsten Dateinamen einlesen
        Do While x <> ""
            'F.MoveFile "\Storage Card USB\" & x, strPath & "\" & x
            'F.MoveFile "\Flash\" & x, strPath & "\" & x
            F.MoveFile "\Storage Card SD\" & x, strPath & "\" & x
            x = F.Dir
        Loop 

    End If

Die erzeugten Dateinamen unterscheiden sich, wenn der Ablageort nicht zur Verfügung steht.
(strFileBasErr enthält den Basis-Dateinamen für die Daten, die zunächst lokal abgelegt werden)

Aus dem Beispiel müsstest Du Deine Aufgabenstellung ableiten können.

Die Applikation läuft bei mir auf einem TP1500 Comfort (TIA V14)

Viel Erfolg!


----------



## PN/DP (14 Oktober 2021)

ant1994 schrieb:


> Wenn ich die Verbindung zum Laptop trenne, hängt sich meine Runtime am Panel auf und ich kann nichts mehr schreiben.


Hast Du mal ein paar Minuten gewartet? Wenn das Netzwerkkabel vom Panel zu einem anderen Ethernet-Port (PC oder Switch oder ...) unterbrochen wird, dann wird es vermutlich ein paar Minuten dauern bis das Panel ohne Ethernet wieder normal funktioniert (wegen Windows Media Sense).

Du hast nicht zufällig Archive auf den Netzwerkpfad laufen?

Das Panel sollte nicht ständig mit dem Netzwerkpfad/Server verbunden sein müssen, sondern nur bei Bedarf, wenn eine Datei kopiert/verschoben werden soll.

Ob ein Netzwerkpfad erreichbar ist, kann man mit `If fso.Dir("\\PCXXX\Folder") <> "" Then ...` prüfen (das kann einige Sekunden dauern). siehe FAQ Function FolderExist(Path)

Harald


----------



## faust (14 Oktober 2021)

ant1994 schrieb:


> ...
> -Ist meine On Error Resume next Anwendung falsch?
> ...


Hallo ant,

die Anweisung "On Error Resume Next" muss in einem Script nur EINMAL eingefügt werden.
Eine mehrmalige Verwendung macht nur Sinn, wenn du das Überspringen eines Fehlers mit "On Error Goto 0" partiell deaktiviert hast und danach wieder "scharf" schalten willst.

Ein weiterer Hinweis:
"On Error Resume Next" sollte IMMER durch eine Fehlerbehandlung mit Hilfe des Error-Objektes ergänzt werden,
z.B. kann mit "If Err.Number = 123 Then..." gezielt oder mit "If Err.Number <> 0 Then..." allgemein auf bestimmte Fehlercodes reagiert werden.


Gruß, Fred


----------



## ant1994 (15 Oktober 2021)

Danke für eure Antworten, ich werde das mal überprüfen (mit der Minute warten) und gegebenenfalls noch eure Vorschläge verwirklichen und testen. Ich müsste wohl zuerst fragen ob das Netzlaufwerk erreichbar ist, da das warten leider beim Kunden keinen Sinn macht. 
Archive läuft bei meinem Netzwerkpfad nicht.
Danke auch an Harald und Fred für die Ergänzungen zu meinem Skript, bin ein Neuling auf dem Gebiet.

erkoausbe, danke für die Alternative, das sollte ich testen. 

Ich melde mich wenn ich es ausprobieren konnte


----------



## ant1994 (18 Oktober 2021)

Servus zusammen,

erkoausbe, deine Laufwerkabfrage hat mir geholfen, um mein Skript nun Lauffähig zu machen. Das Panel hängt sich nun nicht mehr auf. Ich denke dass es sich bei meiner vorherigen Version im Skript "aufgehängt" hatte, da das Laufwerk fehlte. DANKE!

beste Grüße aus Niederbayern!


----------



## erkoausbe (18 Oktober 2021)

ant1994 schrieb:


> Servus zusammen,
> 
> erkoausbe, deine Laufwerkabfrage hat mir geholfen, um mein Skript nun Lauffähig zu machen. Das Panel hängt sich nun nicht mehr auf. Ich denke dass es sich bei meiner vorherigen Version im Skript "aufgehängt" hatte, da das Laufwerk fehlte. DANKE!
> 
> beste Grüße aus Niederbayern!


Danke für die Rückmeldung, freut mich geholfen zu haben!

Grüße aus Norddeutschland zurück!


----------

