Hi,
ich arbeite grade an einem (nicht mehr wirklich kleinem) Skript, dass in einem eingebetteten VBScript Umgebung läuft. Eingebettet ist der Spass in einer Messsoftware (Nova Px), ist ja eigentlich auch egal.
Es läuft (in einem gewissen Teil des scriptes) folgende Schleife:
Wundert euch nicht über die Befehle, die sind Softwarespezifisch.Code:Do CrtlNPMM_in = GetParam (tSignal, cValue, si_Ext2,0) 'Misst Spannung an Ext2 (Wichtig: Auf Input umschalten!)' If (CrtlNPMM > 5) Then 'Wenn Spannung an Ext2 >5V, dann Litho aktiv' SetParam tBase,cValue,pi_hvValueBV,0,Vprobe Perform tGlobal, gGuiUpdate Else 'Spannung an Ext2 nicht >5V, dann Litho inaktiv' SetParam tBase,cValue,pi_hvValueBV,0,0 Perform tGlobal, gGuiUpdate End If If (irgendwas) Then Exit Do End If wait 10 Loop
Wie auch immer, ich habe damit 2 Probleme die ich nicht gelöst bekomme.
1. Abhäning von "CrtlNPMM" springt er ja in den einen oder anderen Teil der If-Verzweigung. Ich würde gerne eine Messagebox (o.ä.) haben, die sich selbst aktualisiert und anzeigt was grad passiert. Die Anzeigt dafür zu basteln ist ja kein Akt, aber erstens aktualisiere sich Messageboxen ja nicht und zum anderen warten sie auf eine Eingabe was an der Stelle totaler Murks ist.
2. Wie ihr schon seht hakt es beim "Exit Do". Da bräuchte es irgend einen Interrupt. Am Besten natürlich kombiniert mit der Messagebox aus 1.
Leider scheint es so, als ob ich nicht auf WshShell o.ä zugreifen kann. Zumindest bringt er Fehler wenn ich es versuche und ich wüsste jetzt nicht wie ich das als einbinden könnte.
Zu meiner Verteidigung muss ich sagen, dass ich eigentlich in C++ "zuhause" bin und VBS für mich ziemliches Neuland ist.
Hat jemand ne Idee und kann mir helfen? Wäre supi![]()
-
11.08.2012, 23:05 #1
[VisualBasic] msgBox aktualisieren, Loop unterbrechen
Eine Person, die nie einen Fehler gemacht hat, hat nie etwas Neues probiert.
-Albert Einstein
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
13.08.2012, 22:22 #2
[VisualBasic] AW: msgBox aktualisieren, Loop unterbrechen
Niemand ne idee?
Wenigstens ne Bedingung, die ich für das "Exid Do" auswerten kann wäre schonmal suuuuper.Eine Person, die nie einen Fehler gemacht hat, hat nie etwas Neues probiert.
-Albert Einstein
-
16.08.2012, 10:55 #3Commander
- Dabei seit
- Nov 2007
- Ort
- Ulm
- Beiträge
- 2.466
[VisualBasic] AW: msgBox aktualisieren, Loop unterbrechen
Für 1. brauchst du ein richtiges Fenster, eine Messagebox kann das per Definition nicht.
Die Probleme, die sich daraus ergeben sind eng miteinander verzahnt. Du musst hier entweder gut tricksen oder aber nebenläufig (Thread) programmieren.
Für das 2. brauchst du ein Signal, Event oder Variable, die bei einem Klick auf den Button geändert wird, also im zweiten Thread, sodass die Schleife darauf reagiert.
Dieses gGUIUpdate hat doch sicherlich die Möglichkeit, auch deine Buttons abzufragen und dann eine globale Variable zu setzten.Sapphire HD 5770|Zalman CNPS 9700 LED@Intel Q6600 G0@1,1 Volt|Asus P5Q-E
BE PART OF THE Computerbase-HWLuxx FOLDING@HOME TEAM
-
17.08.2012, 08:12 #4
[VisualBasic] AW: msgBox aktualisieren, Loop unterbrechen
Abgesehen davon ist das in einer Do-Loop-Schleife gruselig, mach es lieber in einer While-Schleife oder einer Do-While-Schleife... das spart dir das manuelle Abfragen ob du abbrechen sollst...
Ansonsten verhält es sich so, wie Hancock schon meinte:
Du brauchst einen eigenen Thread mit der Mesurement-Loop, weil sonst die UI "einfriert" wenn du in der Schleife bist.
Such mal nach Backgroundworker, ist dafür eigentlich perfekt, weil du hast definierte Start und Endpunkte, sowie Abbruchmöglichkeiten...
Fürs Fenster musst du wirklich ein eigenes Bauen, wenn WPF und MVVM keine Begriffe für dich sind, dann klick dich durch Forms, wird wohl genügen...Herr Stromberg, was ist das "Erdmännchenprinzip"?
Erdmännchen sehen alle gleich aus, sind aber streng organisiert,
wobei die meisten allerdings vor ihrem Bau sitzen und nichts tun. Im Prinzip eben wie im Büro...
Be part of the CB Folding@Home Team

Zitieren