LabVIEWForum.de
SafeArray (COM) in LabVIEW - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: ActiveX & .Net (/Forum-ActiveX-Net)
+---- Thema: SafeArray (COM) in LabVIEW (/Thread-SafeArray-COM-in-LabVIEW)



SafeArray (COM) in LabVIEW - HolgerHH - 28.01.2008 17:48

Ich bin kein MS Visual Studio/VB Experte, ichhoffe ich frage hier keinen völligen Quatsch...

Zur Kommunikation mit COM Objekten (ActiveX) braucht man oft die aus VB stammenden SafeArrays. Soweit ich das verstanden habe scheint das eine spezielle Form von Variants zu sein (oder in LV so angezeigt zu werden).

Leider gelingt es mir im Gegensatz zu einfacheren Übergabeparametern nicht, diese über LV anzusprechen. Ich habe auch keine entsprechenden Beispiele gefunden, da werden immer nur einfache Variablen übergeben.Sad

Kann man SafeArrays überhaupt in LabVIEW (8.5) ansprechen und wenn ja, wie?

Danke
Holger


SafeArray (COM) in LabVIEW - Y-P - 28.01.2008 18:49

Ich kenne mich damit leider auch nicht aus, aber wie es aussieht (wenn man auf der NI-Seite sucht), kommt man da wohl nur mit LabWINDOWS/CVI weiter.

Gruß Markus


SafeArray (COM) in LabVIEW - rolfk - 29.01.2008 12:22

' schrieb:Ich bin kein MS Visual Studio/VB Experte, ichhoffe ich frage hier keinen völligen Quatsch...

Zur Kommunikation mit COM Objekten (ActiveX) braucht man oft die aus VB stammenden SafeArrays. Soweit ich das verstanden habe scheint das eine spezielle Form von Variants zu sein (oder in LV so angezeigt zu werden).

Leider gelingt es mir im Gegensatz zu einfacheren Übergabeparametern nicht, diese über LV anzusprechen. Ich habe auch keine entsprechenden Beispiele gefunden, da werden immer nur einfache Variablen übergeben.Sad

Kann man SafeArrays überhaupt in LabVIEW (8.5) ansprechen und wenn ja, wie?

Danke
Holger

Ich bin mir nicht sicher aber glaube dass SafeArrays durchaus gehen sollten. Die Variants entsprechen ja in wesentlichen Teilen den LabVIEW Variants auch wenn die interne Implementation nicht dieselbe ist. Aber LabVIEW kann zwischen Windows Variants und den eigenen Variants ziemlich gut konvertieren.

Was zeigt Dir ein Variantkontroll an wenn Du es mit so einer Variant verbindest? Hast Du schon mal versucht mit Variant to Data, diese Variant in ein Array vom entsprechenden Datentyp zu konvertieren? Ein Safearray ist zwar ein bischen komplex und nur mit Windows API Funktionen anzugehen, aber ich bin mir sicher dass die LabVIEW Variants in neueren Versionen normalerweise damit umgehen können. Die Herausforderung ist normalerweise zu wissen, was für ein Arraydatentyp diese Variante hat, um sie danach mit Variant To Data in einen entprechenden LabVIEW Datentyp umzuwandeln.

Versuch es mal.

Rolf Kalbermatter


SafeArray (COM) in LabVIEW - HolgerHH - 29.01.2008 14:12

' schrieb:Ich bin mir nicht sicher aber glaube dass SafeArrays durchaus gehen sollten. ...

Versuch es mal.

Rolf Kalbermatter

Ok, danke für den Anstoss, es geht doch. Ich war nur etwas blind bzw. hab's einfach nicht verstanden....

Hier mal das control vom Variant:
[attachment=10876]

Nach Konvertieren mit Variant To Data und genaueren Nachlesen der Spezifikation entsprechend die Konvertierten Daten tatsächlich dem was sie sein sollen...

Was mich ursprünglich aus der Bahn geworfen hatte war folgendes Problem:
[attachment=10880]
Das hat sich jetzt aber als Problem mit Unicode herausgestellt, nicht als Problem mit SafeArrays. Dazu habe ich hier einen interessanten Beitrag gefunden und kann mit der Bibliothek von Rolf auch Unicode konvertieren:
http://forums.ni.com/ni/board/message?boar...uireLogin=False

Kurze Zusammenfassung:
Wenn man weiß welches Datenformat dahintersteckt kann man SafeArrays konvertieren und dann mit den Daten arbeiten. Wenn man aber das Pech hat Unicode strings von einer externen Anwendung zu bekommen, muß man die mit zusätzlichen Libraries konvertieren da LabVIEW das (noch?) nicht unterstützt.

Gruß
Holger