Le 29 Aug 2005 06:19:17 -0700, [EMAIL PROTECTED] a écrit : > Hello, > i've got a problem with pointers in the following function which i want > to use: > > I16 __stdcall DO_ReadPort (U16 CardNumber, U16 Port, U32 *Value) > > The function is supposed to read out the status of a digital port of > analog digital interface card. > I got this function from Dask.h which came with the card. The relevant > lines concerning this function are the following: > > typedef short I16; > typedef unsigned short U16; > typedef unsigned long U32; > > I16 __stdcall DO_ReadPort (U16 CardNumber, U16 Port, U32 *Value) > > I tried to implement this function into python: > # I16 __stdcall DO_ReadPort (U16 CardNumber, U16 Port, U32 *Value); > ReadOPort = dask.DO_ReadPort > ReadOPort.argtypes = [c_ushort, c_ushort, c_ulong] > ReadOPort.restype = c_short > > I can't handle the pointer "Value" which should be an unsigned long > pointer. I'd be very happy, if u could give me a hint how to implement > this pointer into python.
You can use the ctypes.byref() function (as it is in an argulent list): ReadOPort.argtypes = (c_ushort, c_ushort, ctypes.POINTER(c_ulong) ) ReadOPort.restype = c_short status = c_ulong() # status value to be read number = c_ushort(1) # CardNumber = 1 port = c_ushort(11) rc = ReadOPort(number, port, ctypes.byref(status)) print rc, ststus > > Thanks a lot > > Carlo and Pierre > -- http://mail.python.org/mailman/listinfo/python-list