mirror of https://github.com/kivy/kivy.git
101 lines
2.5 KiB
Python
101 lines
2.5 KiB
Python
|
from kivy.app import App
|
||
|
from kivy.clock import Clock
|
||
|
from kivy.uxl import UxlBuilder
|
||
|
from threading import Thread
|
||
|
from collections import deque
|
||
|
from subprocess import Popen, PIPE
|
||
|
|
||
|
content = '''
|
||
|
Widget:
|
||
|
canvas:
|
||
|
Color:
|
||
|
rgb: (1, 0, 1)
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
Rectangle:
|
||
|
pos: self.pos
|
||
|
'''
|
||
|
|
||
|
class AcceleratorApp(App):
|
||
|
def build(self):
|
||
|
root = UxlBuilder(content=content).root
|
||
|
self.queue = deque()
|
||
|
self.thread = Thread(target=self.read_accelerometer, args=(self.queue, ))
|
||
|
self.thread.daemon = True
|
||
|
self.thread.start()
|
||
|
Clock.schedule_interval(self.pop_deque, 0)
|
||
|
return root
|
||
|
|
||
|
def pop_deque(self, *largs):
|
||
|
print '=========+++++FPS+++++=============', Clock.get_fps()
|
||
|
try:
|
||
|
while True:
|
||
|
axis, value = self.queue.pop()
|
||
|
if axis == 'X':
|
||
|
self.root.x = value
|
||
|
if axis == 'Y':
|
||
|
self.root.y = value
|
||
|
except IndexError:
|
||
|
return
|
||
|
|
||
|
def read_accelerometer(self, q):
|
||
|
process = Popen('sudo evtest /dev/input/event7', shell=True,
|
||
|
stdout=PIPE)
|
||
|
while True:
|
||
|
line = process.stdout.readline()
|
||
|
line = line.split(' ')
|
||
|
if len(line) != 11:
|
||
|
continue
|
||
|
if line[0] != 'Event:':
|
||
|
continue
|
||
|
axis = line[8]
|
||
|
value = int(line[10].strip('\n'))
|
||
|
q.appendleft((axis[1], value))
|
||
|
|
||
|
|
||
|
AcceleratorApp().run()
|