Re: [Pyobjc-dev] More wiimote wrapping fun!
Brought to you by:
ronaldoussoren
|
From: John H. <joh...@gm...> - 2008-02-21 22:09:54
|
On Feb 21, 2008, at 2:41 PM, Ronald Oussoren wrote:
>
> On 21 Feb, 2008, at 18:57, John Harrison wrote:
>
>> I can't get a signature. Attempting to do so I get:
>> AttributeError: 'function' object has no attribute 'signature'
>>
>>
>> calling dir(rawIRData_) gives:
>> ['__call__', '__class__', '__delattr__', '__dict__', '__doc__',
>> '__get__', '__getattribute__', '__hash__', '__init__',
>> '__module__', '__name__', '__new__', '__reduce__',
>> '__reduce_ex__', '__repr__', '__setattr__', '__str__',
>> 'func_closure', 'func_code', 'func_defaults', 'func_dict',
>> 'func_doc', 'func_globals', 'func_name']
>>
>> What connects the objc.informal_protocol definition with the class
>> wii_remote_delegate? I can't see anything that seems to use the
>> same name for the thing in two places. Is that where the problem is?
>
> Is the delegate a subclass of NSObject (either directly or
> indirectly)?
>
> Ronald
Here's the start of the code for the delegate:
class wii_remote_delegate(NSObject):
def irPointMovedX_Y_(self, px, py):
pass
#This works
def rawIRDataHackX1_Y1_S1_X2_Y2_S2_X3_Y3_S3_X4_Y4_S4_(self,
*posargs, **kwdargs):
ircontrol.set_points(posargs[0],posargs[1],posargs[3],posargs
[4])
#This does not work
def rawIRData_(self, irData):
print 'rawIRData: %s' % (irData,)
>
>>
>>
>> thanks,
>> John
>>
>> On Feb 21, 2008, at 3:20 AM, Ronald Oussoren wrote:
>>
>>>
>>> On 20 Feb, 2008, at 1:02, John Harrison wrote:
>>>
>>>> I've been following the discussions concerning the wiimote wrapper
>>>> with interest as I have this insane dream of integrating head
>>>> tracking into my laser/pySight controlled video game in order to
>>>> make
>>>> it even sillier than it currently is. Alas, I have encountered
>>>> problems along the way.
>>>>
>>>> Working with some people that I've found on this list and the
>>>> darwiinremote project I've got something that works somewhat for
>>>> button presses and the irPointMovedX_Y_ method. My problem is
>>>> that I
>>>> want to capture the raw IR data, and this portion of the code
>>>> seem to
>>>> not work.
>>>>
>>>> Here is the relevant information from the most recent
>>>> WiiRemote.h file:
>>>>
>>>>
>>>> typedef struct {
>>>> int x, y, s;
>>>> } IRData;
>>>>
>>>> @interface NSObject (WiiRemoteDelegate)
>>>> - (void) rawIRData: (IRData[4]) irData;
>>>>
>>>>
>>>>
>>>>
>>>> in python I have the following:
>>>>
>>>> WiiRemoteDelegate = objc.informal_protocol(
>>>> "WiiRemoteDelegate",
>>>> [
>>>> objc.selector(None,
>>>> selector="irPointMovedX:Y:",
>>>> signature="v@:ff", isRequired=False),
>>>> objc.selector(None,
>>>> selector="rawIRData:",
>>>> signature="v@:[4{IRData=iii}]", isRequired=False)
>>>> ...
>>>>
>>>> def rawIRData_(self, *posargs, **kwdargs):
>>>> #def rawIRData_(self, irData):
>>>> #print 'rawIRData: %s' % (irData,)
>>>> for x in posargs:
>>>> print '%x' % (x)
>>>>
>>>>
>>>> No matter what I do I get the same data in my delegate,
>>>> formatted as
>>>> hex here:
>>>> 1322f2c
>>>> 13
>>>> bfffe350
>>>> 1313b20
>>>> 1313b00
>>>> bfffe3a0
>>>> 0
>>>> 154c396
>>>> 94aa0ca4
>>>> 142b9c8
>>>> 1322ed0
>>>> 13
>>>>
>>>> This looks to me like I'm not getting the ints that I would expect
>>>> but that I'm getting references to the IRData struct or something.
>>>
>>> That's odd, it looks like the informal protocol isn't actually
>>> used. What's the value of rawIRData_.signature? This should be v@:
>>> [4{IRData=iii}]. Please use the commented-out version of the
>>> method prototype for this, not the one with '*posargs'.
>>>
>>> BTW. I've downloaded the WiiRemote framework a while back and my
>>> parsing script cannot deal with some features in the header files
>>> (I haven't even tried fixing that yet). Furthermore, you won't be
>>> able to use the Mii structure from python because that contains
>>> bitfields and those aren't supported yet.
>>>
>>> Ronald
>>>>
>>>>
>>>> Is there something wrong with selector and/or signature? Do I need
>>>> to add method encodings to the signature? What would a properly
>>>> encoded signature look like? If these are pointers is there a
>>>> way to
>>>> dereference them in python?
>>>>
>>>> I've been banging my head against this for more time than I'd
>>>> like to
>>>> admit and keep getting either bus errors or junk data.
>>>>
>>>> Thanks!
>>>> John
>>>>
>>>> -------------------------------------------------------------------
>>>> ------
>>>> This SF.net email is sponsored by: Microsoft
>>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>>> _______________________________________________
>>>> Pyobjc-dev mailing list
>>>> Pyo...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/pyobjc-dev
>>>
>>
>
|