Ich habe auf der Suche nach meinem Problem keine vernünftige Lösung gefunden und wende mich jetzt damit an dieses tolle Forum.
Aus eine Box die Werte eines Sensors einliest möchte ich die Werte wieder rausbekommen. In der dll der Box sind verschiedene Funktionen zum Auslesen der Daten und eine davon bereitet mir Kopfzerbrechen.
Mein Problem sieht folgendermaßen aus:
Diese Funktion liefert einen void Pointer auf einen Bereich in einem Arrays. In dem Array stehen Datensätze die aus dem Speicher der Box kopiert wurden. Der Zeiger zeigt auf einen bestimmten Abschnitt in dem Feld um mir zB. Position, Triggerzeitpunkt oder das Statuswort zu geben.
Ich weiß aber nicht wie ich an die Adresse, geschweige denn den den Wert auf den der Pointer zeigt bekomme.
Ich hoffe ihr könnt mir helfen und bedanke mich schonmal.
LG
astloch
PS: hier ist der C-Code dazu.
Code: Alles auswählen
void *field;
unsigned char udp_data[]; //da stehen die Werte aus dem Speicher drin
/* read timestamp from data packet */
CheckError(EIB7GetDataFieldPtr(eib, udp_data, enc_axis + 1,
EIB7_PDF_Timestamp, &field, &sz));
EncoderData.Timestamp = *(unsigned long *)field;
Code: Alles auswählen
class EncData(Structure): #hier sollen später mal die Daten rein.
_fields_ = [("position", c_longlong),
("status", c_ushort),
("TriggerCounter",c_ushort),
("Timestamp",c_ulong)]
EncoderData = EncData()
eib7_global = c_int(0)
trig_cnt = c_int(0x0001)
status = c_int(0x0002)
pos_dat = c_int(0x0004) #Datenelement fuer die Achse
timestamp = c_int(0x0008)
array_val_ptr = c_ubyte * 200
udp_data = array_val_ptr()
enc_1 = c_int(num_of_entry+1) #Achse der EIB
size = c_ulong()
ref_fifo = pointer(fifo)
sz = c_ulong()
field = c_void_p()
bib.EIB7GetDataFieldPtr(eib_handler,udp_data,eib7_global,trig_cnt, byref(field),byref(sz))