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!
ich versuche gerade eine Struktur die in C++ geschrieben ist in LV so aufzulösen dass ich an die Daten komme.
hier die Beschreibung dazu:
ZebDevice_Read
The ZebDevice_Read function performs physical data transfer from the device. Refer to Data transfer for related information.
BOOL ZebDevice_Read(
ZebDevice* device,
ZebReadInfo* readInfo
);
Parameters
device
[in] Pointer to the device for which to perform the read operation. This pointer is re-trieved by calling the ZebDeviceManager_GetDevice function.
readInfo
[out] Pointer to a ZebReadInfo structure which is filled by the function with status in-formation about the read operation.
Return value
If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call Zeb_GetLastError.
ZebReadInfo
This structure is received as result of the read operation.
Name Type Purpose Size
reserved int Always 0. Do not pay attention 4 byte
atomIndex int For internal use. Do not pay attention 4 byte
atomCount int contains the count of atoms received during the last read operation 4 byte
syncStart BOOL set when the first portion after start or ext_sync_start is re-ceived 4 byte
dataOver BOOL set when no more data expected from the device 4 byte
running BOOL set while data is received 4 byte
müsste so aus dem Bauch heraus funktionieren, bloss das die Struktur aus 6x4 Byte, nicht 4x4 Byte besteht.
Ich denke, es müsste in diesem speziellen Fall auch möglich sein, direkt ein 1D-Array aus U32, vorher belegt mit 6 Elementen, anzuschließen und wieder direkt auszulesen, dann sparst du dir das Speichergeschiebe über die LabVIEW-Kopier-Funktion.
Gruß, Jens
EDIT: Ach ja, hat der bisherige Versuch eigentlich nicht funktioniert? Oder was läuft da falsch? Das hast du bisher nicht gesagt.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Oh, ich sehe da ein paar sehr interessante Sachen. z.B. FindComponent. Sieht aus wie ein Handle oder Instanzpointer. Eigentlich nicht DF-konform. Aber über U32 machbar.
Für die Struktur (6*4 Byte) schließt du ein Array[5] am Eingang (!) und am Ausgang an und sagt im DLL-Knoten "Zeiger auf Daten".
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
27.01.2009, 10:19 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2009 11:36 von jg.)
' schrieb:Oh, ich sehe da ein paar sehr interessante Sachen. z.B. FindComponent. Sieht aus wie ein Handle oder Instanzpointer. Eigentlich nicht DF-konform. Aber über U32 machbar.
Für die Struktur (6*4 Byte) schließt du ein Array[5] am Eingang (!) und am Ausgang an und sagt im DLL-Knoten "Zeiger auf Daten".
So, hallo zusammen,
ich habe versucht das ganze jetzt so zu lösen.
Dein Vorschlag in meiner Umsetzung bringt im array unterschiedliche Werte, ich kann sie aber nicht deuten
Dennis
Anzeige
27.01.2009, 11:32 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2009 11:36 von jg.)
ACHTUNG! Die Struktur besteht aus 6 Elementen a 4 Byte (zumindest laut deiner Beschreibung, und das haben sowohl IchSelbst als auch ich schonmal so geschrieben)! Deshalb sollte das Array 6 Elemente haben, nicht 5, wie in deinem Programm.
Was steht dann darin? Woher sollen wir das wissen, du kennst dich (hoffentlich) mit deinem zebDevice aus, ich jedenfalls nicht...
Laut deiner kopierten Beschreibung sollte im Element Array[0] immer eine 0 drin stehen, Array[1] ist zu ignorieren, Array[2] ist atomcount, etc, etc, bis zum Element Array[5], die dem running Bool set entspricht.
Gruß, Jens
EDIT: Ein wenig Offtopic, aber du hast doch laut Profil LV8.6, hast du schon mal den DLL-Import-Assi von 8.6 auf die DLL losgelassen, der Assi ist inzwischen recht gut geworden.
Außerdem, da du offenbar deine PM's nicht liest, bitte nicht vergessen:
' schrieb:ACHTUNG! Die Struktur besteht aus 6 Elementen a 4 Byte (zumindest laut deiner Beschreibung, und das haben sowohl IchSelbst als auch ich schonmal so geschrieben)! Deshalb sollte das Array 6 Elemente haben, nicht 5, wie in deinem Programm.
Ok, hab ich soweit umgeändert. Hab ich schlichtweg vergessen.
' schrieb:EDIT: Ein wenig Offtopic, aber du hast doch laut Profil LV8.6, hast du schon mal den DLL-Import-Assi von 8.6 auf die DLL losgelassen, der Assi ist inzwischen recht gut geworden.
Den DLL Import Assi hab ich ausprobiert, aber er ist nicht so wahnsinnig prickelnd. Mit dem funktioniert es gar nicht. Im Parameterblock stellt er "auf Typ anpassen". So komme ich nicht einmal soweit wie jetzt.
Um diese Struktur auslesen zu können, muss ich doch mit dem Moveblock arbeiten oder?
' schrieb:Außerdem, da du offenbar deine PM's nicht liest, bitte nicht vergessen:
' schrieb:ich habe versucht das ganze jetzt so zu lösen.
Kannst du die DLL ZEBSDK zum Download bereit stellen (und alles was sonst noch notwendig ist)?
Dein Blockdiagramm kuck ich nur sehr ungern an. Das ist ja zwei Meter breit!
Im Read-Knoten stimmt der Parameter DEVICE nicht. Laut Header ist der ein Pointer, du übergibst aber einen Wert. Hier sollte wohl stehen "Zeiger in Wert".
Außerdem stimmen glaub ich alle Device-Ein/Ausgänge aller zuvor ausgeführten DLL-Knoten nicht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).