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
('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),
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,
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
def is_pressed(dev, button):
return dev.btns & button
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)
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