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 

Einbindung DLL mit geschachtelten Structures



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!

07.05.2017, 15:48
Beitrag #1

lab-falballa Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Apr 2016

15
2011
DE


Deutschland
Einbindung DLL mit geschachtelten Structures
Hallo zusammen,

ich versuche den Delay-Generator SG08P2 von BME Bergmann in Labview anzusteuern. Ich habe dafür eine DLL-Funktion ReadParameters, mit der ich eine Datei *.g0y einlesen können sollte. Leider gibt mir mein Programm aktuell den Fehler 1097 aus und es werden hier structs verwendet, die selbst auch wieder structs und unions enthalten. Hier der Ausschnitt aus der Hilfedatei:

long ReadParameters(DG_BME_State* p_DGS, int* p_module, BOOL* p_CalibrateTiming, unsigned long* p_CalibrationLevel, char* FileName);

typedef struct
{
DG_BME_Control Control;
int BaseAddress;
int DG_Product;
BOOL Master;
int BusNumber;
char ip_address[40];
} DG_BME_State;

mit
typedef struct
{
DelayChannelData T0,A,B,C,D,E,F;
DelayTriggerData DT;
BOOL Gate_AB;
unsigned long GateFunction;
unsigned long OutputLevel;
unsigned long DG_Product;
unsigned long PulseWidth;
} DG_BME_Control;

mit
typedef struct
{
union
{
double FireFirst;
double DelayTime[MemDepth];
};
double PulseWidth[MemDepth];
double SetBack;
unsigned long StepBack[MemDepth];
signed long ListLength;
signed long OutputModulo;
signed long OutputOffset;
unsigned long GoSignal;
unsigned long DoneSignal;
BOOL Positive;
BOOL Terminate;
BOOL HighDrive;
BOOL Disconnect;
BOOL OntoMsBus;
BOOL InputPositive;
} DelayChannelData;
und
typedef struct
{
double TriggerLevel;
double GateLevel;
union
{
double InternalClock;
double InhibitTrigger;
};
double InhibitSecondary;
double ForceTrigger;
double StepBackTime;
double GateDelay;
unsigned long BurstCounter;
unsigned long DelaySecondary;
union
{
_int64 PresetLong;
unsigned long PresetValue;
};
union
{
unsigned long DivideBy;
struct
{
unsigned short OscillatorDivider;
unsigned short TriggerDivider;
};
};
unsigned long TriggerMultiplier;
unsigned long ClockSource;
unsigned long GateDivider;
unsigned long MS_Bus;
BOOL PositiveGate;
BOOL IgnoreGate;
BOOL SynchronizeGate;
BOOL ClockEnable;
BOOL InternalTrigger;
BOOL InternalArm;
BOOL SoftwareTrigger;
BOOL RisingEdge;
BOOL StopOnPreset;
BOOL ResetWhenDone;
BOOL TriggerEnable;
BOOL Terminate;
BOOL GateTerminate;
BOOL UseF;
} DelayTriggerData;

In Labview ist das bei mir dann:
int32_t ReadParameters(void *p_DGS, int32_t *p_module, uint16_t p_CalibrateTiming, uint32_t *p_CalibrationLevel, CStr FileName);
(s. angehängte Datei, Typdefinition, dlls und die zip-Datei (die zip ist die g0y-Datei, die reingeladen werden soll - die Werte sind anders als "0" bzw. "False", so dass man deutlich sehen müsste, wenn das Laden klappt).

Falls irgendjemand Ideen hat, woran es liegen könnte, dass der Aufruf nicht klappt, ich bin für jeden Hinweis dankbar.

VG

p.s. Hintergrund, falls es interessiert: Ich benutze als external Clock die Frequenz meines Femtosekunden-Oszillators mit 79.39 MHz und dann als Gate das Triggersignal meines Chirped Amplifier Verstärkers mit 10 kHz. Bei dieser Kombi funktioniert mit dem mitgelieferten Programm zur Ansteuerung der Delay-Generator-Karte alles soweit gut: Ich bekomme ein Trigger-Signal, was sich bei Verstellen des Delays kontinuierlich verschiebt und einen geringen Jitter von etwa 200 ps zeigt. (Leider habe ich einen Pockelszellentreiber, der ein Fenster von kleiner 5 ns (bei 10% der Amplitude) hat, so dass ich mir mehr zeitlichen Jitter nicht leisten kann.) Wenn ich das Ganze nun mit einem Programm aus mitgelieferten Sub-VIs mache, funktioniert es leider nicht (leider gibt es für Labview keinen Support vom Delay-Karten-Hersteller) - irgendeine Einstellung scheint noch falsch zu sein und sowohl der Delay lässt sich nicht kontinuierlich verstellen als auch der Jitter springt bei höheren Delays auf ungefährt 1 ns. Deshalb möchte ich die Parameterdatei *.g0y, die durch das mitgelieferte Programm erstellt wurde, in Labview öffnen, in der Hoffnung den Fehler zu umgehen.


Angehängte Datei(en)
15.0 .vi  Read Parameters.vi (Größe: 32,4 KB / Downloads: 279)

15.0 .ctl  Parameters.ctl (Größe: 16,45 KB / Downloads: 265)

10.0 .dll  DelayGenerator.dll (Größe: 163,5 KB / Downloads: 279)

4.0 .dll  PlxApi641.dll (Größe: 121,5 KB / Downloads: 281)

0.0 .zip  170505_Parameter-DG.zip (Größe: 1,43 KB / Downloads: 257)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Einbindung DLL mit geschachtelten Structures - lab-falballa - 07.05.2017 15:48

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbindung DLL funktioniert nicht Schrankwand 1 3.058 10.03.2023 18:50
Letzter Beitrag: GerdW
  ext. DLL - Einbindung Read Funktion TobSTAR 7 10.943 12.02.2017 18:40
Letzter Beitrag: rolfk
  DLL-Einbindung schlägt fehl lupus022 7 8.909 23.05.2013 11:16
Letzter Beitrag: lupus022
  Problem bei Struct Einbindung wie in C/C++ raverel 5 7.539 24.04.2013 14:22
Letzter Beitrag: raverel
  DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben hawk72 4 10.082 11.05.2012 14:41
Letzter Beitrag: hawk72
  Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... nmoerchen 15 24.305 17.10.2011 07:32
Letzter Beitrag: Mik

Gehe zu: