私はPythonでPyUSBを使用しています。電子カードからデータを取得するためにUSBポートを聴かなければならないためです。今はラズベリーパイに接続された小さなキーボード(USB接続)からの直接入力を読み込んで自分自身を鍛える必要があります。もちろん、私は型付きのStringを読みたいとは思っていません。私はASCIIコードを得ることを期待しています。私はちょうど私のUSBキーボードからの入力を読み取ることができない。 Pythonでraw USBキーボードデータを取得するにはどうすればよいですか?
は、私はすでにいくつかのスニペットが見つかりました:「デバイスの原因のどちらか、私は16「デバイスがビジー状態ではない」か、まったく私は次の行のコメントを解除した場合、何もエラーが出るimport usb.core
import usb.util
VENDOR_ID = 0x0922
PRODUCT_ID = 0x8003
# find the USB device
device = usb.core.find(idVendor=VENDOR_ID,
idProduct=PRODUCT_ID)
# use the first/default configuration
device.set_configuration()
# first endpoint
endpoint = device[0][(0,0)][0]
# read a data packet
attempts = 10
data = None
while data is None and attempts > 0:
try:
data = device.read(endpoint.bEndpointAddress,
endpoint.wMaxPacketSize)
except usb.core.USBError as e:
data = None
if e.args == ('Operation timed out',):
attempts -= 1
continue
print data
「をdevice.set_configuration()」あなたはキーボードのIDでVENDOR_IDとPRODUCT_IDを置き換えました。
デバイスが入力装置としてOSによって使用されます。あなたはそれを直接使うことはできません。あなたはOSの情報を一切与えなかった。 –
Pythonアプリケーションで使用するために、カーネルを一時的にデタッチする方法はありますか? –
usbデバイスクラスの 'is_kernel_driver_active'と' detach_kernel_driver'メソッドを参照してください。 libusbのドキュメントでこれについて少し説明しています。 – patthoyts