PythonでUDPブロードキャスト [Main] Re: Python で改行を含む長い文字列をスマートに記述する

PythonでUDPブロードキャスト[Python(18)]Re: Python で改行を含む長い文字列をスマートに記述する

PythonワンライナーでUSBミサイルランチャーを制御[USB(2)]

[ミサイルランチャー(1)]

PythonでUDPブロードキャスト[短いサンプル(3)]

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