Hi, Ich habe ein Problem beim Zugriff von Matlab als COMClient auf ein COMObject. (Mit COM ist das Component Object Model gemeint) In Visual Basic habe ich kein Problem mit diesem Object die Deklaration für das Property ist dort Property ComPort As Byte Dies wird in Matlab auf char abgebildet. Eine normale Konvertierung eines char zu einer Zahl mache ich mit uint8(CharVariable). Dies Funktioniert auch. Wenn ich nun einen Zugriff auf das Object mache mit uint8(Object.ComPort) bekomme ich als Antwort 255 dabei müsste es 0 oder im 2.Fall 4 sein. (Ich bin mir bezüglich 0 und 4 sehr sicher, da ich das Object im Debugger habe. In C und VB funktioniert es korrekt.) Muss man bezüglich char bei COM in Matlab irgendetwas beachten? Bei den long(Visual Basic) in Matlab(int32) habe ich keine Probleme beim Zugriff.
In der Matlab Dokumentation ist dazu relativ wenig zu finden, die einzige Tabelle die man findet bezüglich der Datentypen COM/Matlab stammt aus dem Erweiterungspaket zu Matlab/Excel wo der Datentyp (VB) Byte C (Byte) als kompatibel auftaucht. Dies gilt aber anscheinend nur für das Erweiterungspaket. Konkret wurde aus dem COM Server ein (C) BYTE) übermittelt was in VB auf Byte abgebildet wird, laut Matlab (Object.methods('-full')) auf char dies funktioniert in der einen Richtung Client/Server nur bei vorheriger Konvertierung char(Zahl) in der anderen Richtung nicht. Es wird nur 255 zurückgeliefert. Nach einer Korrektur des Datentypes auf (C) short im COM Server gibt es keine Problem mehr. Dieser Typ wird in Matlab auf int16 abgebildet. Fazit: Um Probleme zu vermeiden sollte man bei der Entwicklung von COM Servern die mit Matlab verwendet werden sollen, nur die Automation-kompatiblen Datentypen verwenden die unmittelbar auf Zahlentypen/Strings von Matlab sich abbilden lassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.