Aufruf SUD-Dialog während einer Messung
Ich verwende den DAC-Teil von DIAdem zum Messen und Regeln mehrerer unabhängiger Prüfstände. Aus regelungstechnischen Gründen möchte ich, dass die Messung ständig läuft. Da die Prüflinge jedoch wechseln, müssen prüflingsspezifische Daten (Texte + Werte) während laufender Messung geändert werden. Über einen SUD-Dialog der anwenderdefinierte Variabeln beliefert, realisiere ich das vor Start der Messung bereits. Bisher ist mir noch nicht gelungen diesen Dialog während der Messung über VBS-Dateigerüst von Script-DAC-Treiber aufzurufen. Wie kann ich das realisieren? Ein Beispiel hierzu würde mir sehr helfen. Danke.
Hallo,
ich stand bereits vor dem gleichen Problem. Es wird nicht möglich sein, dass irgend ein "offline-Teil" von Diadem (Dialog, Script, offline-Mathematik, Report) und ein DAC-Schaltplan gleichzeitig aktiv sind.
Eingaben in einen laufenden DAC-Schaltplan sind nur über die Eingabeelemente von DAC möglich. Ich habe diese temporären Eingabeelemente in Unterschaltplänen gruppiert und schalte sie nur bei Bedarf sichtbar. Die Eingaben können über den Block "Speicherung in Variablen" in Variablen abgelegt werden.
Martin Bohm
[email protected]
Similar Messages
-
Ziel ist es in einem SUD Dialog Vorgabewerte in einer Edit/Combo-Box anzeigen zu lassen, um diese Daten nicht bei jedem Aufruf der Autosequenz neu eingeben zu müssen. Sie sollen aber nicht in einer List-Box ausgewählt werden, sondern in einer Edit/combo-Box. Als Vorgabewerte sollten die zuletzt bei einem Durchlauf der Autosequenz eingegebenen Werte oder Texte in dem Fenster der Box erscheinen. Könnte man hier Variablen verwenden? Müssen diese in dem static Fenster eingegeben werden, bzw. mit welcher Befehlszeile?
Sub EditBox5_EventInitialize()
Dim This : Set This = EditBox5
End Sub
Wir verwenden noch DIAdem 8.0Hallo Herr Gutknecht,
Sie koennen eine DIAdem VAS-Variable von Typ "A" oder "G" benutzen und diese der Combobox als zugehoerige Variable zuweisen. Die moeglichen Werte der "A" oder "G" Variable bleiben von SUD-Start zu SUD-Start in DIAdem erhalten, sowie auch der zuletzt-gewaehlte Wert der Variable. Beim naechsten SUD-Start wird dieser zuletz-gewaehlte Wert in der Combobox dargestellt.
Mit schoenen Gruessen,
Brad Turpin
DIAdem Product Support Engineer (USA)
National Instruments -
Änderung der Skalierung von VISUAL-Schreibern während einer Messung?
Hallo,
bei Langzeitmessungen stellt sich immer wieder das Problem, dass man
sich die Messdaten detaillierter anschauen möchte, oder der
Wertebereich ungünstig gewählt wurde. Daher suche ich nach einem Weg,
die Skalierungseinstellungen innerhalb des Visual-Moduls während einer Messung ändern zu können.
mfg Michael SymondsHallo Walter,
großen Dank für Deine Vorschläge. Doch leider zeigen sie für mich eher auf, was alles nicht zu gehen scheint... :-(
Um das Problem noch weiter zu verallgemeinern: Bei Langzeitmessungen
(mehrere Stunden) stellt sich häufig das Problem, dass man schon
während der Messung eine weitergehende (oder leicht geänderte)
Auswertung der Messdaten vornehmen möchte. Wie es in der Natur der
Sache liegt, sind die Messdaten vorher eben nicht bekannt und daher
läßt sich nicht alles vorher festlegen.
Ein ganz simpler Fall besteht z.B. darin, eine
Temperaturverlauftstendenz, die sich vielleicht in einem
Temperaturbereich von ca. +-0,5°C befindet, der letzten 2, 60 und 1000
Minuten anzusehen. Wenn ich aber einen gesamten Temperaturbereich von
10°C habe, kann ich kaum 10 x 3 = 30 Fenster dafür erzeugen...
Mir scheint Diadem für solche Probleme recht schlecht vorbereitet zu sein.
Gruss Michael Symonds -
Wie kann ich während einer Messung Daten ins Excel exportieren?
How can I transfer datas to Excel while conducting a meassurement in Diadem?
Hi,
seit DIAdem 8 gibt es in in DAC -> Verarbeitung den DAC-Script-Treiber. Dieser muss in der GPI-DLL-Regestrierung angemeldet werden (Name: GFSVBSDR.DLL). Dieser Treiber dient zur Erfassung, Verarbeitung und Ausgabe von Messdaten über ein VBScript. Wenn der DAC-Script-Treiber-Block geöffnet wird, kann über den Button Script-Vorlage ein VBS-Dateigerüst in die Zwischenablage kopiert werden (Einstellung: Schnittstelle->Keine, Prozeduren->alle).
In der Initialisierungsphase könnte ein Excel-Objekt angelegt werden, auf das während der Messung zur Werteübergabe an Excel zugegriffen wird.
Da solche Kommunikationen relativ zeitaufwendig sind, ist höchst wahrscheinlich nur eine geringe Abtastrate möglich. Um höhere Raten zu erreichen sollte eine Übertragung an Excel nach
der Messung erfolgen.
Ich hoffe, dass diese Informationen weiterhelfen.
Viel Erfolg
Walter -
Ist es möglich während einer messung über tastendruck ein script auszuführen.
Hallo,
ist es möglich wärend einer Messung über eine Taste ein script zu starten?
es soll meinen Kraftaufnehmer auf null setzen (Nullpunkt verschiebung)
Danke
PS.: wir nutzen Diadem 10.1 Advanced
Hello,
is it possible, during a measuring event to start a script by a button ?
i want to calibrate (set a offset). the script is working.
thank you.
Martin
Message Edited by stadtelmeyer on 03-27-2007 02:54 AMHallo Martin,
ja, ein Script über Tastendruck zu starten, sollte möglich sein.
Dazu benötigen Sie den Script-DAC-Treiber unter Verarbeitung.
Als Eingänge sollten dann ein Daten-Signal von der Taste und ggf. das zu korrigierende (tarierende) Signal in den Block reingehen.
Raus sollte dann dabei das korrigierte Signal kommen.
Im Script, muss dann nur noch auf das Signal von der Taste abgefragt werden.
Eine Alternative hätte ich vielleicht noch, wenn Ihnen es ausreicht, den Wert in DAC zu tarieren, d. h. einen Offset permanent vom aktuellen Signal abzuziehen. Anbei ein DAC-Plan für letztgenannte Lösung.
greets Andreas
Volkswagen AG
Wolfsburg - Germany
Attachments:
Tara.zip 4 KB -
SUD-Dialog Variablen-​Rückgabe
Hallo NI'ler,
ich erstelle gerade meinen ersten SUD-Dialog mit 5 CheckBoxen. Je nach dem, welche Box nun aktiviert wurde, soll eine Variable einen anderen Wert zugewiesen bekommen. Mein bisheriger Ansatz war
Sub CheckBox1_EventChange()
Dim This : Set This = CheckBox1
checkbox1.RunChange
L1 = 1
checkbox2.Value = 0
End Sub
Im VBS-Script sollte dann per "msgbox" der entsprechende Wert von L1 ausgegeben werden. Egal, welche der Boxen aktiviert wird, erhalte ich "0" als Rückgabewert. Könnte mir bitte jemand die korrekte vorgehensweise erklären?
Danke!
Björn
Message Edited by bk220 on 11-02-2007 09:38 AMHallo Björn!
Doch noch was Zeit gefunden
Das grundsätzliche Problem bei deinem Code ist das du wechselweise die Werte von Controls in den Change Events änderst. Dazu kurz ein Umweg in die Theorie: Hat man z.B. zwei Checkboxen in einem Dialog so werden bei jeder Änderung die zugehörige EventChange Routine ausgeführt. Eine Änderung kann interaktiv durchen Anwender erfolgen oder aber durch Ändern des Wertes (Value-Eigenschaft) per Skript. Wird nun in der EventChange Routine des ersten CcheckBox der Wert der zweiten Checkbox verändert so wird auch sofort deren EventChange durchlaufen. Beachtet man dies nicht kommt es zu 'seltsamen' Verhalten.
Das führte dann bei dir dazu das du einen RunChange Aufruf zur Hilfe nehmen musstes damit es überhaupt irgendwie funktionierte. Mach mal Messageboxen in die Routinen und spiel mal was damit herum.
Nun zur Lösung (meine, es gibt da mehrere mögliche Ansätze):
Ich würde in jeden EventChange-Routine einen Aufruf in eine globale Routine machen und die notwendigen Werte als Parameter übergeben. Das sieht dann für die ersten beiden CheckBoxen so aus:
Sub CheckBox1_EventChange()
Dim This : Set This = CheckBox1
Call UpdateCheckBox(1,CheckBox1.Value)
End Sub
Sub CheckBox2_EventChange()
Dim This : Set This = CheckBox2
Call UpdateCheckBox(2,CheckBox2.Value)
End Sub
Die globale Routine sieht dann so aus:
Public Sub UpdateCheckBox(Byref nNo, Byref nValue)
If (L1 <> nNo) And (nValue = 1) Then
' es hat sich was geändert
L1 = nNo
Elseif (L1 = nNo) And (nValue = 0) Then
' auch alle AUS zulassen
L1 = 0
End If
' Umwandlung L1 Wert in gecheckte Box
checkbox1.Value = (L1 = 1)
checkbox2.Value = (L1 = 2)
checkbox3.Value = (L1 = 3)
checkbox4.Value = (L1 = 4)
checkbox5.Value = (L1 = 5)
checkbox6.Value = (L1 = 6)
checkbox7.Value = (L1 = 7)
End Sub
Die richtigen Zustände der Checkboxen werden dort gesammelt aus L1 abgeleitet. Die Logik ist so das auch alle Boxen aus sein dürfen. Die Logik am Anfang verhindert Rekursionen.
Ich hoffe das hilft
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater? -
Table1.Rows.Add (SUD-Dialog)
Hallo DIAdem'ler,
das erweitern von Tabellen (neue Zeile am Tabellenende einfügen) im SUD-Dialog mittels
Call Table1.Rows.Add
dauert pro Zeile ca. 0,3 Sekunden. (Intel Core2 Duo, 3GHz, 2 GB Ram, WIN XP SP3)
Bei 600 Einträgen dauert der Vorgang ungefähr 3 Minuten. Dies nicht gerade sehr effektiv.
Wie kann man diesen Vorgang schneller gestalten?
Oder besser:
Gibt es eine Methode mit der man eine Tabelle aus dem Script heraus direkt um X neue Zeilen erweitern kann?
Vorab vielen Dank für jegliche Hilfe, frohe Weihnachten und ein guten Rutsch ins Neue Jahr
Solved!
Go to Solution.Hallo!
Es geht einfacher als man vielleicht denkt:
Table1.Rows.Count = Table1.Rows.Count + 600
Das dauert bei mir dann 0.3s insgesamt.
Frohes (Rest-)Weihnachtsfest und alles Gute für 2009
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater? -
SUD-Dialoge im XP-style ?
Wenn ich SUD-Dialoge unter Windows XP schreibe (und ausführe), so sehen die Dialoge gar nich aus, wie Dialogefenster unter XP auszusehen haben. (Dialog-Editor ver. 9.10.2036, Windows im Thema "standard"). Insbesondere stört mich, das Buttons nur durch zwei Linien und nicht durch einen Rahmen begrenzt sind. (Die Darstellung der abgerundeten Ecken wäre mir egal.)
Diese Tatsache verwundert mich, zumal der Dialogeditor für seine eigene Darstellung den korrekten XP-Style verwendet. Aber die fertigen Dialoge verwenden dann wohl doch nicht die entsprechenden API-calls.
Oder bin ich in der Version des Dialogeditors nicht auf dem Laufenden ?
Martin Bohm
[email protected]Zusatz: Ein Updade auf das aktuellste Servicepack hat in diesen Punken keine Auswirkungen:
WinXP im Style "classic": Alle Dialoge werden korrekt, wie im Style zu erwarten, dargestellt.
WinXP im Style "Standard": Buttons werden nicht im XP-Style (mit abgerundeten Ecken) dargestellt. Sie werden auch nicht im classic-style (durch ein Rechteck mit Schatten begrenzt) dargestellt. Die Begrenzung erfolgt nur noch durch den Schatten, also nur rechts und unten. Andere Controls wie Scrollbars haben ähnliche Artefakte. Offenbar verwenden die SUD-Dialoge nicht die korrekten API-calls, die bei einem Wechsel des Styles immer zu einer korrekten Darstellung führen würden.
Unabhängig davon gibt es erhebliche Probleme mit Diadem-DAC bei einer scriptgesteuerten Umschaltung in den Vollbildschirm, wenn der Style "Standard" gewählt ist. Ich werde darüber in einem separaten Beitrag berichten.
Fazit: Unter WinXP sollte immer der Style "classic" gewählt werden.
Martin Bohm
[email protected] -
How to select, with a SUD DIALOG, the range and the trace data to import from citadel
Hello,
I use DIAdem to generate reports from Citadel and I would like to create a script which asks the user to select data and it's corresponding range to import it from citadel. The script should display a dialog box (sud dialog), the user will choose the data and the range.
I would like to know if a function exists because up to now, I have not found anything suitable for this.
In my search i found this (see answer from Brad Turpin) http://forums.ni.com/ni/board/message?board.id=60&message.id=985&requireLogin=False
But I don't know how to automatize it with sud dialog
I am looking for information and examples on the subject.
ThanksHello,
I changed the data base path, when I run the script an error message appeared (see attached file). When I look the dataportal files, I see that the complet data is charge and not a window (see attached file). have you any idee?
Attachments:
error load citadel function.pdf 455 KB
view.pdf 279 KB -
How can I define the position of a SUD dialog in Diadem-AUT​O?
In the COD dialog-editor you can define the X- and Y-position of every dialog-window. In the SUD dialog-editor these options are not available. Is there any way to specify the position of a SUD dialog?
Hi Johannes,
There are two parameters in the dialog properties called "Top" and "Left" that seem to deterine the position of the upper left corner of the dialog on the screen.
I have only used them in the "Preview" window of the SUD editor, but they seem to work fine.
Let me know if this is what you were looking for.
Otmar
Otmar D. Foehner
Business Development Manager
DIAdem and Test Data Management
National Instruments
Austin, TX - USA
"For an optimist the glass is half full, for a pessimist it's half empty, and for an engineer is twice bigger than necessary." -
Control VIEW cursor with SUD Dialog
Hello,
I've developed a little SUD dialog and sticked into the bottom of VIEW. I the TopArea I've "CurveChart2D".
With the dialog I want to change the cursor type and mode (see code below)
If I try to change the cursor from this script (the script is inside the embedded VIEW dialog I get the message of DIAdem "error"
If I try now to change the cursor with the VIEW buttons I get the message "Schwerwiegender Fehler".
In fact this little script crash DIAdem. I've to restart.
If I use the Dialog standalone (not as a part of VIEW), everything works fine.
I believe the problem is, that you can't change something from an ActiveArea (Dialog in Area : 2) inside an InactiveArea (2D Graph in Area :1)
But this works (graph change something inside the dialog)
Sub ViewConnector_EventCursorPosChanged(ByRef This) 'Erzeugter Event-Handler
'todo change the label and value controls for the different cursor and trim methods
edtXPosVal.Text = View.ActiveSheet.Cursor.X1
edtYPosVal.Text = View.ActiveSheet.Cursor.Y1
edtChnPos.Text = View.ActiveSheet.Cursor.P1
End Sub
So the point is,
1. how is it possible to control VIEW with an embedded SUD dialog?
2. The script engine shouldn't crash DIAdem. It should just abort or shouldn't be executable.
Sub Button1_EventClick(ByRef This) 'Erzeugter Event-Handler
iTrimMethod = rdbtnTrimMethods.Value
Dim oSheets
Dim oChart
oSheets = View.Sheets
sSheetName = View.ActiveSheet.Name
Select Case iTrimMethod
Case 0
MsgBox View.ActiveSheet.Name & " Index= " & View.ActiveSheet.Index
Set oChart = View.Sheets(View.ActiveSheet.Name).Areas("Area : 1").DisplayObj
View.Sheets(View.ActiveSheet.Name).Cursor.Type = "Crosshair"
View.Sheets(View.ActiveSheet.Name).Cursor.Mode = "GraphPoints"
View.Refresh
Case 1
MsgBox View.ActiveSheet.Name & " Index= " & View.ActiveSheet.Index
View.ActiveSheet.Areas(1).Active = True
View.Sheets(View.ActiveSheet.Name).Cursor.Type = "Band"
View.Sheets(View.ActiveSheet.Name).Cursor.Mode = "GraphPoints"
View.Refresh
Case 2
MsgBox View.ActiveSheet.Name & " Index= " & View.ActiveSheet.Index
View.ActiveSheet.Areas(1).Active = True
View.Sheets(View.ActiveSheet.Name).Cursor.Type = "Crosshair"
View.Sheets(View.ActiveSheet.Name).Cursor.Mode = "GraphPoints"
View.Refresh
End Select
End Sub
Best regards
Thomas Plöger
BASF Catalysts Germany GmbHHallo Mr. Plöger,
I've double-checked the described behavior. In general, the script code you've developed is OK. But there was a bug in DIAdem that causes the problem. It will be fixed with the DIAdem 2010 service pack that we can provide soon.
Greetings
WalterRick -
How to Start EXE-File from SUD Dialog
Hello!
My Problem is: I'm trying to start an exe-file by clicking a button within a SUD-Dialog. Does anybody know how to realize that?
For example: Run("C:\Windows\Notepad.exe") ?!
Thanks!
Solved!
Go to Solution.Thanks for you reply!
Your code worked so far to start Notepad.exe but what I'm trying to do is to start a file, located one folder above my script folder.
I tried the following...
dim command : command = "Script Assistent\TSM Script Assistent.NET.exe"
dim shell : Set shell = CreateObject("WScript.Shell")
dim status : status = shell.Run(command, 1, true)
If
0 <> status ThenErr.Raise6, "", "Command returned error!"
End If
...but then I receive an error message :-/
The script and the sud-file is located in:
G:\Script\Scriptfile.vbs + Dialogfile.sud
The exe I'm trying to start is here:
G:\Script\Script Assistent\TSM Script Assistent.NET.exe
What's wrong with that? -
Deleting multiple rows from SUD dialog table
Hi,
I have some SUD dialog tables that I would like to delete some rows from. I can select and delete all or one row (using a SUD button that finds out which one row was selected or if all, and then deleting them with the table.rows.remove command), but I seem to have troubles if I want to select multiple rows (either in a range, ex: rows 3-10, or non-sequential, ex: 1, 4, 6 and 23). I just started working on this but thought maybe someone has already done this and can save me the trouble!
Thanks!
Julia MoellerHi Julia,
Just a quick guess-- try looping backwards and deleting the last rows first:
FOR i = 10 TO 3 Step -1
table.rows.remove i
NEXT
Haven't tested it, so no guarantees,
Brad Turpin
DIAdem Product Support Engineer
National Instruments -
Non-Modal SUD Dialog Possible?
Is it possible to have a non-modal SUD dialog box? I would like to use a SUD dialog box to show some things going on while a script is running, and would like it to operate much like a non-modal message box.
Thanks! JuliaThank you for your reply, I was hoping to display a table (with changing values) or some images while scripts were executing, but I will be content with the non-modal MsgBoxDisp dialog boxes
-
SUD-dialogs: msgbox cause a runtimeerror
If a eventhandler of a SUD-dialog contain a msgbox command, this command cause a runtimeerror if Diadem has lost the focus. It means: the messagebox don't appear and the execution of a script is stopt.
Steps to reproduce:
run the example in DIAdem, after pressing 'ok' of the first Messagebox change the focus to any other windows-application, when the delay of 10s is over and the second messagebox should appear, a runtimeerror occur.
Is it a bug or a feature of diadem?
Is it a error of me?
Is there a better workaround then avoiding messageboxes in dialogs?
Bohm
[email protected]
Attachments:
msgbox_test.SUD 2 KBI reproduced the Problem on my machine with DIAdem 9.1!
I give the information to the Developers of DIAdem, maybe they can give us a workaround or a solution.
The only possible workaround at this moment is to call the messageboxes with the timedelay out off DIAdem-Script.
If i get another possible solution i post it here at the discussion form.
Alex Rudolph
National Instruments
Maybe you are looking for
-
Range Partitioning for the day of the week
I have a logging table which i want to partition into 7 partition, each one for the day of the week, eg MON,TUE, WED. I am aware and I can do a list partition by creating a parition key which stores 'DY' of the week and this means that I need to add
-
Putting content onto my Nokia N97-messages, calend...
How do I put the message,contact,calender icons on to the main screen of my Nokia N97? I ahve gone through the options>edit content>add content>edit content procedure but when i get to the contents the above choices aren't there. Am I looking in the
-
how do you change back to the south african store from the american store on your settings??
-
Exception agreegation not working on Formula cumulative work
Hi Guys, I have an issue with exception aggregation when I am trying to aggregate the values of Formula cumulative work. How we can aggregate the value of formula. formula is: (finish date <= start date)* work. where finish date and start date bot
-
Hi all, we are currently in the process of preparing for Buisness Package certification in Enterprise Portal. While going through the Test Plan provided by SAP describing the guidelines and the naming conventions. Is there any thing that should be es