Hi Thomas!
On Fri, 12 Feb 2010, Thomas Heller wrote:
The first snip does not work. These are the errors:
> print ptr.GetControlMode(chanid) # try to leave out the plMode parameter
Exception: (-2147352561, 'Parameter not optional.', (None, None, None, 0,
None))
> print ptr.GetControlMode(chanid, 0) # pass a number for plMode...
Exception: (-2147352571, 'Type mismatch.', ('TypeError: Parameter 1', (0,
0)))
> If nonthing of the above works, I guess you would have to pass the second
> parameter
> by reference. The basic code would have to look something like this; it
> is basically what I assume that VB does:
I've tried that by doing the simplistic thing:
<snip>
mode = c_int(0)
piezo1.GetMaxTravel(APTPiezoLib.CHAN1_ID, byref(mode))
</snip>
And I get:
Exception: Cannot put <cparam 'P' (012D7468)> in VARIANT
I guess that means I do need that pass_by_reference() function to do some
massaging of types.
> Ok, but what is this pass_by_reference() function?
>
> It should take the argument (a ctypes c_int instance, for example),
> and convert to something that will eventually, in the Invoke call,
> used as BYREF VARIANT argument.
>
> I'll try to come up with some ideas for that if the first code snippet
> above really fails.
Is there anything you would recommend me to read to try to get some ideas
on my own?
Thanks for your help!
Bye & Good Luck!
Pablo B.
------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
comtypes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/comtypes-users