I'm trying to get the 3D Space Navigator (http://www.3dconnexion.com/) to work 
in Python. I quickly found a solution using comtypes on the 3DConnexion 
developer forum:
http://www.3dconnexion.com/forum/viewtopic.php?t=984&start=30

However that solution only works with comtypes version 0.2.1. Any newer version 
will result in the events not registering.

This is the output I get from the GetEvents() function when using version 0.2.1:


        Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit 
(Intel)] on win32
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import logging
        >>> logging.basicConfig(level=logging.DEBUG)
        >>> class EventHandler:
        ...     def __getattr__(self, name):
        ...             print name
        ...
        >>> from comtypes.client import *
        DEBUG:comtypes:CoInitializeEx(None, 2)
        >>> x = CreateObject("TDxInput.Device")
        DEBUG:comtypes.client:TDxInput.Device -> 
{82C5AB54-C92C-4D52-AAC5-27E25E22604C}
        
DEBUG:comtypes.client:CoCreateInstance({82C5AB54-C92C-4D52-AAC5-27E25E22604C}, 
clsctx=None, interface=None)
        INFO:comtypes.client:wrap(<POINTER(IUnknown) object c108a0>)
        INFO:comtypes.client:Does implement IProvideClassInfo
        INFO:comtypes.client:Implements default interface from typeinfo <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0.ISimpleDevice'>
        INFO:comtypes.client:Final result is <POINTER(ISimpleDevice) object 
c2c080>
        >>> x.Connect()
        0
        >>> test = GetEvents(x.sensor, EventHandler)
        INFO:comtypes.client:wrap_outparam(<POINTER(ISensor) object c108a0>)
        DEBUG:comtypes.client:<POINTER(ISensor) object c108a0> using 
sinkinterface <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0._ISensorEvents'>
        DEBUG:comtypes.client:Start advise <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0._ISensorEvents'>
        DEBUG:comtypes._comobject:<comtypes.client.DispEventReceiver object at 
0x00C12590>.QueryInterface({E6929A4A-6F41-46C6-9252-A8CC53472CB1}) -> S_OK
        DEBUG:comtypes._comobject:1 active COM objects: Added   
<comtypes.client.DispEventReceiver object at 0x00C12590>
        DEBUG:comtypes._comobject:<comtypes.client.DispEventReceiver object at 
0x00C12590>.AddRef() -> 1
        DEBUG:comtypes.client:End advise <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0._ISensorEvents'>
        DEBUG:comtypes._comobject:<comtypes.client.DispEventReceiver object at 
0x00C12590>.Release() -> 0
        DEBUG:comtypes._comobject:0 active COM objects: Removed 
<comtypes.client.DispEventReceiver object at 0x00C12590>
        >>>



And this is the output I get when I use version 0.5.1:


        Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit 
(Intel)] on win32
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import logging
        >>> logging.basicConfig(level=logging.DEBUG)
        >>> from comtypes.client import *
        DEBUG:comtypes:CoInitializeEx(None, 2)
        >>> x = CreateObject("TDxInput.Device")
        DEBUG:comtypes.client:TDxInput.Device -> 
{82C5AB54-C92C-4D52-AAC5-27E25E22604C}
        
DEBUG:comtypes.client:CoCreateInstance({82C5AB54-C92C-4D52-AAC5-27E25E22604C}, 
clsctx=None, interface=None)
        DEBUG:comtypes.client:GetBestInterface(<POINTER(IUnknown) ptr=0x9f3fc0 
at c0e3f0>)
        DEBUG:comtypes.client:Does implement IProvideClassInfo
        DEBUG:comtypes.client:Default interface is 
{CB3BF65E-0816-482A-BB11-64AF1E837812}
        DEBUG:comtypes:Release <POINTER(IUnknown) ptr=0x9f3fc0 at c14080>
        
DEBUG:comtypes.client._generate:GetModule(TLIBATTR(GUID={7858B9E0-5793-4BE4-9B53-661D922790D2},
 Version=1.0, LCID=0, FLags=0x8))
        DEBUG:comtypes.client:Implements default interface from typeinfo <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0.ISimpleDevice'>
        DEBUG:comtypes.client:Final result is <POINTER(ISimpleDevice) 
ptr=0x9f3fc0 at c14d00>
        DEBUG:comtypes:Release <POINTER(IProvideClassInfo) ptr=0x9f68a8 at 
c0ed00>
        DEBUG:comtypes:Release <POINTER(ITypeInfo) ptr=0x24c5f4 at c0eda0>
        DEBUG:comtypes:Release <POINTER(ITypeInfo) ptr=0x24c620 at c0ee90>
        DEBUG:comtypes:Release <POINTER(ITypeLib) ptr=0x24bd88 at c0ef80>
        DEBUG:comtypes:Release <POINTER(IUnknown) ptr=0x9f3fc0 at c0e3f0>
        >>> x.Connect()
        0
        >>> test = ShowEvents(x.sensor)
        DEBUG:comtypes.client:wrap_outparam(<POINTER(ISensor) ptr=0x9f2170 at 
c14d50>)
        DEBUG:comtypes.client._events:<POINTER(ISensor) ptr=0x9f2170 at c14d50> 
using sinkinterface <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0._ISensorEvents'>
        DEBUG:comtypes:Release <POINTER(IProvideClassInfo2) ptr=0x9f2194 at 
a91530>
        # event found: _ISensorEvents_SensorInput
        DEBUG:comtypes.client._events:Start advise <class 
'comtypes.gen._7858B9E0_5793_4BE4_9B53_661D922790D2_0_1_0._ISensorEvents'>
        DEBUG:comtypes._comobject:<comtypes.client._events.Sink object at 
0x00C52990>.QueryInterface({E6929A4A-6F41-46C6-9252-A8CC53472CB1}) -> S_OK
        DEBUG:comtypes._comobject:1 active COM objects: Added   
<comtypes.client._events.Sink object at 0x00C52990>
        DEBUG:comtypes._comobject:<comtypes.client._events.Sink object at 
0x00C52990>.AddRef() -> 1
        DEBUG:comtypes:Release <POINTER(IConnectionPointContainer) ptr=0x9f2174 
at c843a0>
        DEBUG:comtypes:Release <POINTER(ISensor) ptr=0x9f2170 at c14d50>
        >>>



I believe, that this is enough output, because I believe the line 
"DEBUG:comtypes:Release <POINTER(ISensor) ptr=0x9f2170 at c14d50>" shows, where 
the bug originates. If you need any further testing, I would be glad to help.
_________________________________________________________________________
In 5 Schritten zur eigenen Homepage. Jetzt Domain sichern und gestalten! 
Nur 3,99 EUR/Monat! http://www.maildomain.web.de/?mc=021114


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
comtypes-users mailing list
comtypes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/comtypes-users

Reply via email to