PythonからUSBミサイルランチャを操作する短いサンプル
先日の記事(PythonワンライナーでUSBミサイルランチャーを制御)はネタに走りすぎていてわかりやすくはなかったので、
あらためて短いサンプルを書きました。
PythonからUSBミサイルランチャーを操作するためには、 libusb-win32とPyUSBというモジュールをインストールする必要があります。 pyusbモジュールについて。 というページでWindows版のインストーラが公開されているので、 それを使うと簡単にインストールできます。
インストールが完了して、USBミサイルランチャーを接続したら、 下の34行のスクリプトを実行すると 上下左右に移動した後発射されるはずです。
VENDER_ID = 0x1941 PRODUCT_ID = 0x8021 def find(vendor_id, product_id): import usb busses = usb.busses() for bus in busses: for dev in bus.devices: if dev.idVendor == vendor_id and dev.idProduct == product_id: return dev raise RuntimeError('Device not found.') dev = find(VENDER_ID, PRODUCT_ID) conf = dev.configurations[0] interface = conf.interfaces[0][0] handle = dev.open() handle.setConfiguration(conf) handle.claimInterface(interface) handle.setAltInterface(interface) def do(command, time = 0.0): handle.controlMsg(0x21, 0x09, command, 0x2, 0x0) if time: from time import sleep sleep(time) do([0, 0, 0, 0, 0, 0, 0, 0]) # stop do([1, 0, 0, 0, 0, 0, 0, 0], 1.0) # up do([2, 0, 0, 0, 0, 0, 0, 0], 1.0) # down do([4, 0, 0, 0, 0, 0, 0, 0], 1.0) # left do([8, 0, 0, 0, 0, 0, 0, 0], 1.0) # right do([16, 0, 0, 0, 0, 0, 0, 0], 6.0) # fire