我的平板电脑中有一个加速度计,我可以从 javascript 中读取它。
如何在Python中访问这些数据?是否有一些 ctypes 技巧可以用来调用 Windows 8 传感器 API 函数?
可怕的黑客 - 在
server.py
中启动网络服务器:
import bottle
from threading import Thread
on_data = lambda alpha, beta, gamma: None
@bottle.route('/')
def handler():
return bottle.static_file('index.html', '.')
@bottle.post('/data')
def handler():
on_data(**bottle.request.json)
def data_handler(f):
global on_data
on_data = f
return f
def go():
t = Thread(target=lambda: bottle.run(quiet=True))
t.start()
有了这个
index.html
:
<script>
window.addEventListener('deviceorientation', function(eventData) {
var d = {};
['alpha', 'beta', 'gamma'].forEach(function(prop) {
d[prop] = eventData[prop];
})
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8080/data");
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(d));
}, false);
</script>
并将其用作:
import server
@server.data_hander
def on_acc_data(alpha, beta, gamma):
print alpha, beta, gamma
server.go()
在浏览器中打开
localhost:8080/
后
我知道这已经很旧了,但我刚刚发现你可以使用winsdk
pip install winsdk
(winrt 的社区维护版本)import time
import winsdk.windows.devices.sensors
import winsdk.windows.devices.sensors as sensors
accel = sensors.Accelerometer.get_default()
def reading_changed_handler(accel, args: winsdk.windows.devices.sensors.AccelerometerReadingChangedEventArgs):
reading = args.reading
print(reading.acceleration_x, reading.acceleration_y, reading.acceleration_z)
accel.add_reading_changed(reading_changed_handler)
while True:
time.sleep(1)