DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Utnerschiedliches Verhalten im Run- und Debugmode

Hallo zusammen,
 
ich habe ein Script geschrieben, welches ein tdm-file auswerten soll. Hierbei wird jeweils nur eine Gruppe ins Datenportal zum Auswerten geladen. Nun führe ich einige Aktionen aus, kopiere Teile der Gruppe (einige Kanäle) in neu angelegte Gruppen.Lass ich mein Script im normalen Modus laufen, so kommt es vor, das manche Kopieraktionen nicht ausgeführt wurden oder nix kopiert wurde und damit die Zielkanalgruppen leer sind. Bis jetzt dachte ich, das es an meinem Datensatz liegt, doch sieht das verhalten im Debugmodus anderes aus. Hier sind die Zielkanalgruppen nie leer.
Woran kann das liegen? Muss ich den Zwischenspeicher nach jeder Kopieraktion leeren? Geht das überhaupt?
Hat jemand ne Idee?
0 Kudos
Message 1 of 13
(4,986 Views)
Hallo f-zoid,
 
ich habe ein ähnliches Verhalten, wenn ich Excel-Dateien auswerten möchte (es wir eine Excel-Datei geöffnet, und einge Zellen werden ausgelesen; hierbei kann es sein, dass die Datei noch nicht wirklich geöffnet ist).
Hier konnte ich mir bisher nur helfen, indem ich im Skript eine Pause eingefügt habe. - Vielleicht hilft es dir auch.
 
Gruß
Jonas
0 Kudos
Message 2 of 13
(4,976 Views)
es scheint tatsächlich etwas mit dem zwischenspeicher zu tun zu haben. hab mal nachdem ich einen 'kopierfehler' hatte nur diese gruppe in eine einzele tdm gespeichert. dann hab ich mit der tdm mein prog wieder gestartet. es tritt selbiger fehler auf (übrigens an verschieden stellen, aber immer weil ein kopiervorgang fehlgeschlagen ist, also leere gruppen vorhanden sind.) nun war ich so frustriert und hab diadem geschlossen.
beim erneuten öffnen kann ich das tdm-file mit dem script auswerten. woran kann es liegen? wie befrei ich den speicher von vorherigen kopiervorgängen???
 
mfg michael
0 Kudos
Message 3 of 13
(4,976 Views)

Kann es sein das nur die Ansicht des Portals nicht aktualisiert wird. Das ist das Standardverhalten während das Script läuft, um die Ausführung zu beschleunigen. Am Ende des Scripts wird aber auch standardmäßig das Portal aktualisiert. Versuchen Sie mal den Befehl am Anfang des Script:

Call UIAutoRefreshSet(True)                             'Switch refresh on

Es gibt noch eine zweite Möglichkeit. Die Variable UIAutoRefresh bestimmt das Standardverhalten, das Sie in den Einstellungen zu DIAdem-SCRIPT einstellen.

Ich hoffe das hilft.

Winfried

0 Kudos
Message 4 of 13
(4,971 Views)

Hab die pause idee getestet und eine pause von einer sekunde eingebaut, das ist es nicht.

Nun lass ich gerade mal mit ui-refresh laufen. aber das kann es eigentlich nicht sein, denn wenn mein fehler auftaucht, bricht das programm ab, und das portal zeigt den aktuellen stand an, indem die kanalgruppe leere ist. der fehler selbst kann ich schon abfangen, in dem ich teste ob kanäle in meiner zielgruppe sind.

kann also den fehler umgehen, das problem dabei ist, das meine auswertung am ende falsch ist, wenn ich den fehler auf diese weise umgehe...

also, bin für weitere ideen offen...teste weiter, wenn mir was auffällt meld ich mich wieder...

besten dank schonmal!

0 Kudos
Message 5 of 13
(4,967 Views)

Hallo F-Zoid,

 

die Pausen mußten bei mir u.U. auch bis zu 5 sec lang sein (bricht dein Skript immer an der geichen Stelle ab?)

Auch deine weitere Beschreibung mit dem überprüfen ob die Kanalgruppe vorhanden ist hört sich nach einem timing Problem an.

 

Grüße

Jonas

0 Kudos
Message 6 of 13
(4,958 Views)
hallo bbi...
 
also wenn ich da 5 sec pausen einbinden muss, dann dauert meine auswertung unter umständen 3 tage...dann kann ich die geschichte ja gleich im debug modus laufen lassen...da dauert es dann 'nur' einen tag!!!was eigentlich nur 2 stunden dauern darf...
hab mal ne schleife eingebaut, die solange den kopiervorgang wiederholt, bis kanäle vorhanden sind, mal sehen obs funktioniert...
bericht gibs montag...ich hab feierabendSmiley HappySmiley Very HappySmiley Tongue
wünsch allen ein schönes we...
hören montag von einander, danke für die hilfen!!!
0 Kudos
Message 7 of 13
(4,954 Views)
Ok, hab es so gemacht:
frag nach dem kopieren einfach nach, ob kanäle vorhanden sind...aber höchstens 10 mal, wenn dann noch keine vorhanden sind, dann wird der teil übersprungen.
 
hab jetzt einige testläufe gemacht und das höchste waren so ca 5 oder 6 wiederholungen...woran es genau liegt, kann ich nicht sagen, werd weiter testen, falls es jemanden intressiert...
 
mfg
0 Kudos
Message 8 of 13
(4,935 Views)
Hallo Michael!
 
Weil es mich interresiert und ich es mir nicht ganz vorstellen kann, habe ich mal ein einfaches Skript nach deinen Beschreibungen gemacht:
Option Explicit  
 
Dim i
Dim s
 
Call DataDelAll()
 
Call DataFileLoad("EXAMPLE.TDM","TDM","Load")
 
For i=1 to 100
  s = "MyGroup_" & i
 
  Call GroupCreate(s)
 
  Call ChnCopy("EXAMPLE/Zeit",            s & "/EXAMPLE_Zeit")
  Call ChnCopy("EXAMPLE/Geschwindigkeit", s & "/EXAMPLE_Geschwindigkeit")
  Call ChnCopy("EXAMPLE/Drehzahl",        s & "/EXAMPLE_Drehzahl")
  Call ChnCopy("EXAMPLE/Drehmoment",      s & "/EXAMPLE_Drehmoment")
Next
Damit klappt aber alles wie gewollt. Was machst du sonst noch?
 
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 9 of 13
(4,925 Views)
Hier mein code:
Variablen:
- firstSrcChn ist der erste Kanal, aus dem kopiert werden soll
- lastSrcChn ist der letzte Kanal, aus dem kopiert werden soll
- blockStart ist die erste Zeilenummern der zu kopierenden Zeilen
- blockEnd ist die erste Zeilennummer der nicht mehr zu kopierenden Zeilen -> damit ergibt blockEnd -blockStart die Anzahl der zu kopierenden Zeilen
- newGrp ist die nummer der zuvor neu kreierten Gruppe (nicht mehr dargestellt)
runs = 0
Do While GroupChnCount(newGrp) = 0 AND runs < 20

Call DATABLCLPCOPY(firstSrcChn & " - " & lastSrcChn,blockStart,blockEnd - blockStart) '... CHNNOSTR,CHNROW,VALNO    
  Call GROUPDEFAULTSET(newGrp)                 '... TARGETGROUPINDEX
  Call CHNCLPPASTE(1)                     '... CLPTARGET

  runs = runs + 1
 Loop
 

Der Beschriebene Fehler tritt meines Erachtens nur auf, wenn gleichzeitig andere Programme am Rechner ausgeführt werden, bzw. andere Aktion. Der Befehl DATABLCLPCOPY scheint die Daten ins Clipboard zu kopieren. Dies hat zur folge, das man zum Beispiel bei zeitgleicher Arbeit im Text-Pad bei Cut and Paste Aktionen die Daten der Kanäle ins Text-Pad kopiert. Umgekehrt heisst das also wohl auch, dass dieser Befehl duch andere Programme die das ClipBoard verwenden beeinflusst wird.

Die While-Schleife Fragt bis zu 20 mal ab, ob die in der neuen Gruppe Kanäle erstellt wurden. Meine Tests haben bis jetzt noch keinen Fall ausgelöst, indenen diese Grenze überschritten wurden.

Danke für Dein Intresse...

 

Mfg Michael

0 Kudos
Message 10 of 13
(4,840 Views)