Re: [comtypes-users] Events for device not working since version 0.3.2
Malte Skarupke schrieb: 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=984start=30 However that solution only works with comtypes version 0.2.1. Any newer version will result in the events not registering. I've looked up the thread in the forum. A user codenamed 'kitsu' wrote: Note that there is a error in the comtypes 0.3.2 GetEvents function which causes it to miss all events. I've reported it to the mailing list, but until it is fixed use comtypes 0.2.1. I have not found the 'report' he mentions on the mailing list. Dois the code snippet that he posted here http://www.3dconnexion.com/forum/viewtopic.php?t=984start=33 work with comtypes 0.2.1, and not with later comtypes? 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)
Re: [comtypes-users] Events for device not working since version 0.3.2
[Resending, the first answer seemed to get lost somewhere] Malte Skarupke schrieb: 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=984start=30 However that solution only works with comtypes version 0.2.1. Any newer version will result in the events not registering. 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. Does it work when you keep a reference to the sensor object? Something like this: import logging logging.basicConfig(level=logging.DEBUG) from comtypes.client import * x = CreateObject(TDxInput.Device) x.Connect() 0 s = x.sensor test = ShowEvents(s) -- Thanks, Thomas - 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=100url=/ ___ comtypes-users mailing list comtypes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/comtypes-users
[comtypes-users] Events for device not working since version 0.3.2
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=984start=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'