En Wed, 05 Aug 2009 20:12:09 -0300, Sparky <samnspa...@gmail.com> escribió:
Hello! I am trying to call this method: long _stdcall AIBurst(long *idnum, [...] long timeout, float (*voltages)[4], long *stateIOout, long *overVoltage, long transferMode); I am having some problems with that float (*voltages)[4].
pointerArray = (ctypes.c_void_p * 4) voltages = pointerArray(ctypes.cast(ctypes.pointer ((ctypes.c_long * 4096)()), ctypes.c_void_p), ctypes.cast (ctypes.pointer((ctypes.c_long * 4096)()), ctypes.c_void_p), ctypes.cast(ctypes.pointer((ctypes.c_long * 4096)()), ctypes.c_void_p), ctypes.cast(ctypes.pointer((ctypes.c_long * 4096)
Why c_long and not c_float? Anyway, this way looks much more clear to me (and doesn't require a cast): arr4096_type = ctypes.c_float * 4096 voltages_type = arr4096_type * 4 voltages = voltages_type()
The program runs but the values that come back in the array are not right.
Thay might be due to the long/float confusion. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list