如何使用Python读取Windows平板电脑中的加速度计?

问题描述 投票:0回答:2

我的平板电脑中有一个加速度计,我可以从 javascript 中读取它。

如何在Python中访问这些数据?是否有一些 ctypes 技巧可以用来调用 Windows 8 传感器 API 函数?

python windows accelerometer
2个回答
0
投票

可怕的黑客 - 在

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/


0
投票

我知道这已经很旧了,但我刚刚发现你可以使用winsdk

pip install winsdk
(winrt 的社区维护版本)


这是windows运行时api下的加速度计类的文档 https://learn.microsoft.com/en-us/uwp/api/windows.devices.sensors.accelerometer?view=winrt-22621


用于读取加速度计数据的基本脚本
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)
© www.soinside.com 2019 - 2024. All rights reserved.