2013年4月25日木曜日

pywinusbの使用例

デバッグアダプタのLEDを点滅するだけのプログラム。LEDチカチカです。
よくわからないが、パソコンによってはHIDデバイスとして見えない場合がある。
もちろん、UV4からは見えます。

# USBDAP.py 2013/4/25
import pywinusb.hid

class USBDAP:
    def __init__(self, pname="CMSIS-DAP"):
        self.dev = None
        for dev in pywinusb.hid.find_all_hid_devices():
            if dev.product_name.find(pname) >= 0:
                self.dev = dev
                break
        assert(self.dev)
        self.dev.open()
        self.dev.set_raw_data_handler(self.rx_handler)
        reports = dev.find_output_reports()
        assert(len(reports) == 1)
        self.report = reports[0]

    def close(self):
        if self.dev:
            self.dev.close()

    def rx_handler(self, data):
        self.recv_data = data[1:]

    def write(self, data):
        assert(len(data) >= 0 and len(data) <= 64)
        data += [0]*(64-len(data))
        self.recv_data = None
        self.report.send([0] + data)

    def read(self):
        while self.recv_data == None:
            pass
        return self.recv_data

if __name__=="__main__":
    import time
    dap = USBDAP("KL25Z CMSIS-DAP")
    for _ in range(10):
        dap.write([1,1,1]) # LED ON
        dap.read()
        time.sleep(0.2)
        dap.write([1,1,0]) # LED OFF
        dap.read()
        time.sleep(0.2)
    dap.close()

(2013/4/25)
---

0 件のコメント: