X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/b1d5972142e87c4cc58e08e44cbd025cf5f6b26c..9096acac0bf12c658183483be6dc898db1a31756:/src/pywiiuse/PyWiiUse.py diff --git a/src/pywiiuse/PyWiiUse.py b/src/pywiiuse/PyWiiUse.py index 55a1c98..248055c 100755 --- a/src/pywiiuse/PyWiiUse.py +++ b/src/pywiiuse/PyWiiUse.py @@ -14,6 +14,7 @@ import os import ctypes from ctypes import c_char_p, c_int, c_byte, c_uint, c_uint16, c_float, c_short, c_void_p, c_char from ctypes import CFUNCTYPE, Structure, POINTER, Union, byref, cdll +from ctypes.util import find_library import sys # duplicate the wiiuse data structures @@ -89,6 +90,16 @@ class ir(_Structure): ('z', c_float), ] + def __str__(self) : + l = [] + pr = l.append + for name, typ in self._fields_ : + try : + pr('(%s, %s)' % (name, getattr(self, name))) + except : + pass + return '\n'.join(l) + class joystick(_Structure): _fields_ = [('max', vec2b), ('min', vec2b), @@ -239,10 +250,13 @@ min_val,max_val,min_loc,max_loc = cvMinMaxLoc(img) return CFUNCTYPE(result, *atypes)((name, dll), tuple(aflags)) # get the shared library -if os.name == 'nt': - dll = cdll.LoadLibrary('wiiuse.dll') -else: - dll = cdll.LoadLibrary('libwiiuse.so') +lib = find_library('wiiuse') or find_library('libwiiuse') +dll = cdll.LoadLibrary(lib) + +#if os.name == 'nt': +# dll = cdll.LoadLibrary('wiiuse.dll') +#else: +# dll = cdll.LoadLibrary('libwiiuse.so') # access the functions init = cfunc('wiiuse_init', dll, wiimote_pp, @@ -266,6 +280,9 @@ set_accel_threshold = dll.wiiuse_set_accel_threshold set_orient_threshold = dll.wiiuse_set_orient_threshold set_orient_threshold.argtypes = [wiimote_p, c_float] set_timeout = dll.wiiuse_set_timeout +set_ir = dll.wiiuse_set_ir +set_ir_position = dll.wiiuse_set_ir_position +set_ir_vres = dll.wiiuse_set_ir_vres def is_pressed(dev, button): return dev.btns & button @@ -332,7 +349,8 @@ nunchuk_button = { 'Z':0x01, if __name__ == '__main__': def handle_event(wm): print 'EVENT', wm.unid, wm.btns - print wm.gforce.x, wm.gforce.y, wm.gforce.z + #print wm.gforce.x, wm.gforce.y, wm.gforce.z + print wm.ir nmotes = 1 wiimotes = init(nmotes) @@ -349,13 +367,18 @@ if __name__ == '__main__': print 'failed to connect to any wiimote.' sys.exit(1) - set_leds(wiimotes[0], 0x50) + set_leds(wiimotes[0], 0x20) motion_sensing(wiimotes[0], 1) + set_ir(wiimotes[0], 1) while True: - if poll(wiimotes, nmotes): - for i in range(nmotes): - m = wiimotes[i][0] - if wiimotes[i][0].event == EVENT: - handle_event(wiimotes[i][0]) + try : + if poll(wiimotes, nmotes): + print '.' + for i in range(nmotes): + m = wiimotes[i][0] + if wiimotes[i][0].event == EVENT: + handle_event(wiimotes[i][0]) + except KeyboardInterrupt : + break