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