INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Mit Matlab über DCOM LabVIEW VI steuern



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

27.06.2008, 15:43
Beitrag #1

Nebur Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

7.1
-
de

8048
Schweiz
Mit Matlab über DCOM LabVIEW VI steuern
Hoi zamme,

um Abläufe zu automatisieren will ich ein bestehendes LabVIEW VI mit Matlab, von einem anderen Rechner aus, fernzusteuern. Mir schwebt vor eine
ActiveX Verbindung aufzubauen und via DCOM Befehle an LabVEIW zu senden. Soweit ich verstanden habe sollte das kein Problem sein, nur find ich
nirgends eine Anleitung für die Vorgehensweise beim Verbindungsaufbau.

Ich habe eine Beschreibung gefunden, die mir den Weg zu der ProgID beschreibt.

Registry Editor -> HKEY_CLASSES_ROOT -> CW....

Laut Beschreibung sind das die ProgIDs für CWKnob control.

Ich habe das auch schon ausprobiert und bekomme bei einer ProgID Folgende Antwort:

>> LVW = actxserver('CWUIControlsLib.CWSlide.1', '192.168.1.79'Wink

LVW =

COM.cwuicontrolslib.cwslide.1

>> get(LVW)
ActivePointer: [1x38 char]
Caption: [1x38 char]
Font: [1x38 char]
CaptionColor: [1x38 char]
ReadyState: [1x38 char]
Enabled: [1x38 char]
Statistics: [1x38 char]
BackColor: [1x38 char]
ValuePairIndex: [1x38 char]
Value: [1x38 char]
ForeColor: [1x38 char]
ImmediateUpdates: [1x38 char]
ShowFocusMode: [1x38 char]
BackgroundImage: [1x38 char]
Windowless: [1x38 char]
IncDecValue: [1x38 char]
KeyboardMode: [1x38 char]
ValuePairsOnly: [1x38 char]
InteriorColor: [1x38 char]
Axis: [1x38 char]
Pointers: [1x38 char]
CWBindings: [1x38 char]

>> LVW.ActivePointer
??? Invoke Error: Schwerwiegender Fehler

Leider kann ich die Inhalte nicht auslesen und wie finde ich die richtige ProgID zu meine VIs bzw. CWKnobs?
Braucht man für jeden Knopt, schalter usw. eine ProgID?

Die ProgID und den Syntax zum Schreiben und Lesen von Informationen würden mir sehr weiter helfen. Ich benutze LabVEIW 7.1 und Matlab 6.5.

Ich würde mich sehr über Hilfe in Form von einer konkreten Beschreibung oder/und Matlab/VirtualBasic Beispielen freuen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2008, 21:05
Beitrag #2

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Mit Matlab über DCOM LabVIEW VI steuern
Ich glaube nicht, dass du mit den progids arbeiten willst...
wenn du eine verbindung von matlab aus zu einem lv vi oeffnen willst, nimm die einfachste LabVIEW schnittstelle. d.h. oeffne einen channel zu LabVIEW, lad das vi in den memory und setze die controls per set ctl val und lies werte per get ctl val bei simpler angabe des LABELS.

http://sine.ni.com/devzone/cda/epd/p/id/1832

das ist ein beispiel wie du von LabVIEW aus ein VI oeffnest und per activeX fernsteuerst. die elemente musst du lediglich 1:1 auf matlab umsetzen.

anbei ein VBS script, das lediglich zeigen soll wie man es grundsaetzlich angeht...

[code]Option Explicit
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2008, 07:45 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2008 10:05 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mit Matlab über DCOM LabVIEW VI steuern
' schrieb:Hoi zamme,

um Abläufe zu automatisieren will ich ein bestehendes LabVIEW VI mit Matlab, von einem anderen Rechner aus, fernzusteuern. Mir schwebt vor eine
ActiveX Verbindung aufzubauen und via DCOM Befehle an LabVEIW zu senden. Soweit ich verstanden habe sollte das kein Problem sein, nur find ich
nirgends eine Anleitung für die Vorgehensweise beim Verbindungsaufbau.

Ich habe eine Beschreibung gefunden, die mir den Weg zu der ProgID beschreibt.

Registry Editor -> HKEY_CLASSES_ROOT -> CW....

Laut Beschreibung sind das die ProgIDs für CWKnob control.
Freedive hat Dir den Weg schon gewiesen. Nur noch ein Detail. CW Controls sind nicht geeignet um LabVIEW Controls zu steuern. CW kommt von ComponentWorks und das sind ActiveX Controls die Du in eine VB oder VC++ oder ähnliche Applikation einbauen kannst. Sie sehen den LabVIEW Controls ähnlich, haben vergleichbare wenn auch oft etwas eingeschränktere Funktionalität und wurden von NI auf der Basis der LabVIEW Controls entwickelt.

Aber es sind keine LabVIEW Controls!! LabVIEW Controls sind ganz LabVIEW eigene Objekte die auch nur durch LabVIEW angesteuert werden können. Sie sind weder auf Basis von Windows Controls, Windows windows noch irgend eine andere externe Komponente aufgebaut und das ist auch nicht verwunderlich, da sie auch auch in LabVIEW für Linux und Mac OSX laufen müssen.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2008, 12:55
Beitrag #4

Nebur Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

7.1
-
de

8048
Schweiz
Mit Matlab über DCOM LabVIEW VI steuern
[quote='']Ich glaube nicht, dass du mit den progids arbeiten willst...
wenn du eine verbindung von matlab aus zu einem lv vi oeffnen willst, nimm die einfachste LabVIEW schnittstelle. d.h. oeffne einen channel zu LabVIEW, lad das vi in den memory und setze die controls per set ctl val und lies werte per get ctl val bei simpler angabe des LABELS.

http://sine.ni.com/devzone/cda/epd/p/id/1832

das ist ein beispiel wie du von LabVIEW aus ein VI oeffnest und per activeX fernsteuerst. die elemente musst du lediglich 1:1 auf matlab umsetzen.

anbei ein VBS script, das lediglich zeigen soll wie man es grundsaetzlich angeht...

[code]Option Explicit
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2008, 13:38
Beitrag #5

Nebur Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

7.1
-
de

8048
Schweiz
Mit Matlab über DCOM LabVIEW VI steuern
@Rolf: Deine antwort hab ich glatt übersehen...

Danke für die Erklärung zu CWKnob, das war in der Beschreibung die ich gelesen habe, nicht so genau erklärt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2008, 10:09
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mit Matlab über DCOM LabVIEW VI steuern
' schrieb:Zuerst schon mal danke für deine Antwort und für das Beispiel,

so habe ich mir das auch vorgestellt aber wenn ich die LabVIEW Application nicht auf dem gleichen Rechner habe kann ich sie nicht mit "LabVIEW.Application" aufrufen sondern brauche eine andere ProgID, da mich Matlab darauf aufmerksam macht, dass er die ProgID nicht falsch ist.

LVW = actxserver('LabVIEW.Application', '192.168.1.79'Wink

??? Error using ==> actxserver
Server creation failed. Invalid ProgID 'LabVIEW.Application'

Bin echt um jede Hilfe dankbar...

Du musst wohl die LabVIEW Typelibrary auf dem Computer installieren. Am einfachsten geht das durch Installation der Runtime.
Zwar könntest Du mit ProgIDs diesen Umstand eventuel umgehen aber danach bekommst Du Probleme wenn Du Properties und Methoden von diesem Server aufrufen willst. Du wirst ja wohl kaum eigene IDispatch Interfaces innerhalb von Matlab generieren wollen um ActiveX aka. DCOM mitzuteilen, wie die Daten über das Netwerk gemarshallt (will sagen verpackt) werden sollen.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2008, 16:33
Beitrag #7

Nebur Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

7.1
-
de

8048
Schweiz
Mit Matlab über DCOM LabVIEW VI steuern
' schrieb:Du wirst ja wohl kaum eigene IDispatch Interfaces innerhalb von Matlab generieren wollen um ActiveX aka. DCOM mitzuteilen, wie die Daten über das Netwerk gemarshallt (will sagen verpackt) werden sollen.

nein, ich will lediglich einige Schalter und Knöpfe eines Bestehenden VI fernsteuern.

Ich hatte zu Anfang eine Runtime installiert, diese hatte aber nicht die gleiche Versionsnummer wie LabVIEW. Hab jetzt die Runtime mit der gleichen Versionsnummer wie LabVIEW installiert, komme aber auch nicht weiter.

ich vermute einfach, dass ich nicht die richtige ProgID habe, da ich schon mal Funktionen zum fernsteuern einer Application geschrieben habe.
In den Manuals war immer die ProgID "LeCroy.XStreamDSO" angegeben jedoch musste ich schlussentlich "LeCroy.ActiveDSOCtrl.1" benutzen damit es lief. Warum, weiss ich leider selber nicht da die Informationen des Supports von LeCroy recht spärlich waren.

Eine Idee?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2008, 16:39
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mit Matlab über DCOM LabVIEW VI steuern
' schrieb:nein, ich will lediglich einige Schalter und Knöpfe eines Bestehenden VI fernsteuern.

Ich hatte zu Anfang eine Runtime installiert, diese hatte aber nicht die gleiche Versionsnummer wie LabVIEW. Hab jetzt die Runtime mit der gleichen Versionsnummer wie LabVIEW installiert, komme aber auch nicht weiter.

ich vermute einfach, dass ich nicht die richtige ProgID habe, da ich schon mal Funktionen zum fernsteuern einer Application geschrieben habe.
In den Manuals war immer die ProgID "LeCroy.XStreamDSO" angegeben jedoch musste ich schlussentlich "LeCroy.ActiveDSOCtrl.1" benutzen damit es lief. Warum, weiss ich leider selber nicht da die Informationen des Supports von LeCroy recht spärlich waren.

Eine Idee?

Da kann LeCroy nicht so viel dafür. Das ist ein Teil von DCOM/ActiveX und ist auf dem Mist von MS gewachsen. Normalerweise sollte die unversioned ProgID beim registrieren einer ActiveX ProgID automatisch auch generiert werden tut es aber oft nicht.

Such doch mal in der Registry nach "LabVIEW.Application" und dann solltest Du da so einiges finden mit einigen Endungen. Die sollten es dann sein.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.07.2008, 10:29
Beitrag #9

Nebur Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

7.1
-
de

8048
Schweiz
Mit Matlab über DCOM LabVIEW VI steuern
Ah, danke für die Aufklärung. Ich kann mich leider nur auf die Manuals der Hersteller beziehen...

Ich habe mich auf die Suche nach der richtigen ProgID in Registry gemacht und mit allen in Frage kommenden ProgIDs versucht die Verbindung herzustellen.

Bei 'LVActiveXControl.LabVIEWControl.1' und 'LVActiveXControl.LabVIEWControl' bekomme ich folgende Meldung

>> LV = actxserver('LVActiveXControl.LabVIEWControl.1', '192.168.1.79'Wink
??? Error using ==> actxserver
Cannot find type library. COM object creation failed.


>> LV = actxserver('LVActiveXControl.LabVIEWControl', '192.168.1.79'Wink
??? Error using ==> actxserver
Cannot find type library. COM object creation failed.


Nun frag ich mich ob die type library nicht bei der runtime dabei gewesen ist, oder brauch ich noch eine Software?
Muss ich die Runtime auf beiden Rechnern Instalieren?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2008, 10:07
Beitrag #10

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mit Matlab über DCOM LabVIEW VI steuern
' schrieb:Ah, danke für die Aufklärung. Ich kann mich leider nur auf die Manuals der Hersteller beziehen...

Ich habe mich auf die Suche nach der richtigen ProgID in Registry gemacht und mit allen in Frage kommenden ProgIDs versucht die Verbindung herzustellen.

Bei 'LVActiveXControl.LabVIEWControl.1' und 'LVActiveXControl.LabVIEWControl' bekomme ich folgende Meldung

>> LV = actxserver('LVActiveXControl.LabVIEWControl.1', '192.168.1.79'Wink
??? Error using ==> actxserver
Cannot find type library. COM object creation failed.


>> LV = actxserver('LVActiveXControl.LabVIEWControl', '192.168.1.79'Wink
??? Error using ==> actxserver
Cannot find type library. COM object creation failed.


Nun frag ich mich ob die type library nicht bei der runtime dabei gewesen ist, oder brauch ich noch eine Software?
Muss ich die Runtime auf beiden Rechnern Instalieren?

Da sollte eher sowas stehen als HKEY_CLASSES_ROOTLabVIEW.Application oder dann mit noch einem Punkt und einer Zahl dahinter.

Ja minimal die LabVIEW Runtime ist schon nötig auf dem Client Rechner von dem Du die Verbinding starten willst. Und auf dem Server wirst Du ja wohl das Entwicklungssystem haben.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Question Verbindung von Beckhoff zu LabView über ActiveX Thorben 2 7.099 17.04.2014 15:06
Letzter Beitrag: Thorben
  DCOM-Schnittstelle Diplomand 6 12.385 04.08.2011 16:06
Letzter Beitrag: Y-P
  "STRG+F" Funktion in Excel über LabVIEW oabel 1 6.607 14.12.2010 16:20
Letzter Beitrag: SeBa
  ActiveX Probleme mit MATLAB johnengson 2 5.942 27.09.2010 08:38
Letzter Beitrag: oenk
  LabView über Makros starten biber 3 7.332 25.07.2010 08:09
Letzter Beitrag: Y-P
  DCOM-Objekt-Erzeugung einer VI in MATLAB Burkart 1 5.639 08.11.2009 16:27
Letzter Beitrag: Y-P

Gehe zu: