WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

COM Technologie in Matlab ansprechen

 

jofa
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 11.02.11
Wohnort: Darmstadt
Version: R20011a
     Beitrag Verfasst am: 22.08.2011, 17:43     Titel: COM Technologie in Matlab ansprechen
  Antworten mit Zitat      
Hallo zusammen,

habe folgendes Problem:
Habe ein Statik Software Programm(Dlubal RSTAB) welche eine COM-Schnittstelle zur verfügung stellt. In der Beschreibung steht, dass man nur eine Software benötigt die COM-Technologie unterstützt.
Beispiele gibt es für .NET und VBA und dazu eine Objektbibliothek für .NET eine .dll und VBA .tlb Datei.
Nun da Matlab auch COM Technologie unterstützt dachte ich das müsste auch gehen.
Wenn ich nun die Fkt: loadlibrary(.dll, .h) verweden möchte fehlt mir dazu ein header Datei.
Die Funktionen
Code:

bringt mich auch nicht weiter. Habe es probiert über Excel einzulesen mit
Code:

Excel = actxserver(Excel.Application)

komme aber nicht in die zusätzlich hinzugefügte RSTAB Library rein.

Hat jemand einen Tip?
Leider sind die Kollegen von DLubal in Sachen Matlab nicht so fit, deswegen probiere ich es hier, da ich von Matlab nicht ablassen möchte, wie Ihr wohl versteht Razz
Besten Dank und lieben Gruß
jofa
Private Nachricht senden Benutzer-Profile anzeigen


DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 18.12.2013, 18:26     Titel:
  Antworten mit Zitat      
Dieses Thema würde mich auch sehr interessieren. Hast du dafür schon eine Lösung gefunden? Oder weiß jemand wie das gehen könnte?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.12.2013, 19:41     Titel:
  Antworten mit Zitat      
Hallo

du muss den Programmatic Identifier rausfinden.
http://msdn.microsoft.com/en-us/lib.....c144152%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/lib.....200%28v=office.10%29.aspx

Das kannst z.B versuchen über Registry zu machen
und zwar unter HKEY_CLASSES_ROOT den Eintrag zu RSTAB suchen
dann kannst du über dieses ProgID das Programm mit ACTXSERVER ansprechen.

Interessant ist auch
http://www.mathworks.de/de/help/matlab/ref/actxserver.html
http://www.mathworks.de/de/help/matlab/ref/interfaces.html
http://www.mathworks.de/de/help/mat.....o-the-object.html#f103036
Private Nachricht senden Benutzer-Profile anzeigen
 
DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 19.12.2013, 12:04     Titel:
  Antworten mit Zitat      
Hallo,
Danke für die schnelle Hilfe.
ICh muss vorweg noch sagen, dass ich blutiger Anfänger bin, was MATLAB angeht.
Ich habe die Registry nach "rstab" durchsucht und die Einträge die ich gefunden habe getestet. Leider alles negativ.
Die Datei für VBA heißt DLUBAL.RSTAB6.dll. deshalb habe ich mit kombinationen daraus experimentiert und siehe da, das erste mal eine andere Fehlermeldung.

Code:
h = actxserver('RSTAB6.Application')
Error using feval
Custom interface is not supported on a 64-bit version of MATLAB.


Dann habe ich die 32-bit Version von Matlab installiert und es schien zu funktionieren. Bei Doppelklick auf die "Variable" f im Workspace öffnet sich ein leeres Fenster.

Wenn ich z.B.
Code:
h = actxserver('Excel.Application')

eingebe und "f" aus dem Workspace öffne, ist das Fenster nicht leer.

Ich habe auch beim Entwickler von RSTAB nachgefragt und bekam die Antwort, dass "ein direkter Zugriff zwischen den Programmen nicht möglich [sei], da MatLab eine andere Form des Bindings unterstützt."
Ist das das endgültige Aus für mein Unterfangen? Ich kenne mich dafür zu wenig mit der Materie aus um das beurteilen zu können.

Liebe Grüße
David
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 13:57     Titel:
  Antworten mit Zitat      
Hallo

ehrlich gesagt kenne ich mich mit RSTAB nicht aus,
aber die Anbindung sollte denke ich schon so funktionieren

Zitat:
Ich habe auch beim Entwickler von RSTAB nachgefragt und bekam die Antwort, dass "ein direkter Zugriff zwischen den Programmen nicht möglich [sei], da MatLab eine andere Form des Bindings unterstützt."
Ist das das endgültige Aus für mein Unterfangen? Ich kenne mich dafür zu wenig mit der Materie aus um das beurteilen zu können.


Das ist doch kein direkter Zugriff, sondern ein Indirekter über RSCom.
Vielleicht hat den Entwickler an ACTXCONTROL gedacht, jedenfalls verstehe ich nicht was er hier meint.


Wenn die Verbindung zu COM Server hast, dann weiter geht es nur, mit den Methoden die zur Verfügung für die Interface stehen.
Also steuerst du RSTAB über COM Server und das sollte ähnlich VB/C#

Versuche mal so die Liste der Methoden zu bekommen:
Code:

rs6app = actxserver('RSTAB6.Application')
rs6app.invoke


Außerdem habe ich noch gegooglet,
ich glaube sollte man so nutzen:
https://forum.dlubal.com/forums/showthread.php?t=103

Code:


% Weist RS-Structure die aktuelle Rstab Datei (Struktur) zu
RS_Structure= actxserver('RSTAB6.Structure')

% Methoden auflisten
RS_Structure.invoke


% Weist RS-App die aktuelle Rstab Application zu
RS_App = RS_Structure.rsGetApplication

% Belegt eine Lizenz von RS-COM. Muss ausgeführt werden, damit RS-Com funktioniert.
RS_App.rsLockLicence()

RS_StructureData = RS_Structure.rsGetStructuralData
RS_StructureData.rsPrepareModification()

knotenanz = 3
Knoten = struct(                                ...
    'iNo'          , num2cell(1:knotenanz)      ,...
    'iRefNodeNo'   , 0                          ,...
    'csType'       , []                         ,...
    'x'            , num2cell((1:knotenanz) +5) ,...
    'y'            , num2cell((1:knotenanz) +6) ,...
    'z'            , num2cell((1:knotenanz) +7) ,...
    'strComment'   , ''                         ,...
    'ID'           , 'ID NUMBER'                )

RS_StructureData.rsSetNodeArr(knotenanz , Knoten)

RS_StructureData.rsFinishModification()
RS_App.rsUnlockLicence() % Gibt RStab wieder frei

 




Wie man da weiter mit den Methoden jongliert, habe ich keine Ahnung, da muss du Dokumentation von RSTAB anschauen oder bei der Community fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 19.12.2013, 15:22     Titel:
  Antworten mit Zitat      
Hi,
vielen Dank für deine Hilfe und den vielversprechenden Ansatz.

nach der invoke-Abfrage werden leider keine Methoden aufgelistet, es kommt aber auch keine Fehlermeldung.

wenn ich dann die Zuweisungen ausführe, kommt die Fehlermeldung "No appropriate method, property, or field rsGetApplication for class COM.RSTAB6_Structure." (Jetzt als Beispiel für RS_Structure.rsGetApplication)

Eigentlich sollte mir "invoke" doch die Methoden auflisten, die ich dann verwenden kann, oder?

LG David
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 16:01     Titel:
  Antworten mit Zitat      
Hallo

versuche mal das, was wird angezeigt?

Code:

RS_Structure= actxserver('RSTAB6.Structure')
customlist = RS_Structure.interfaces
 
Private Nachricht senden Benutzer-Profile anzeigen
 
DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 19.12.2013, 16:18     Titel:
  Antworten mit Zitat      
Code:

>> RS_Structure= actxserver('RSTAB6.Structure');
>> customlist = RS_Structure.interfaces;
>> customlist

customlist =

     []
 
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 16:21     Titel:
  Antworten mit Zitat      
Okay dann ist das nicht das Richtige, was ist damit:
Code:

rs6app = actxserver('RSTAB6.Application')
customlist = rs6app.interfaces


 
Private Nachricht senden Benutzer-Profile anzeigen
 
DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 19.12.2013, 16:34     Titel:
  Antworten mit Zitat      
leider das Gleiche! Sad

Code:

>> rs6app = actxserver('RSTAB6.Application');
>> customlist = rs6app.interfaces

customlist =

     []
 
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 17:18     Titel:
  Antworten mit Zitat      
Okay habe mir Dokumentation zu Interface angeschaut, da hat der Entwickler leider recht, so funktioniert es wohl nicht. Da braucht man DLL um den RFEM COM Server zu nutzen.
Das muss man wohl in die Welt von C/C++ eintauchen und sich eine MEX basteln. Das ist mit einigem Aufwand verbunden.
Sorry dass ich dir nicht helfen konnte
Private Nachricht senden Benutzer-Profile anzeigen
 
DaveG.
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.12.13
Wohnort: Konstanz
Version: R2013b
     Beitrag Verfasst am: 19.12.2013, 17:30     Titel:
  Antworten mit Zitat      
Kein Problem. Trotzdem vielen Dank für deine Hilfe! Echt super!
LG David
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.