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])
dap.read()
time.sleep(0.2)
dap.write([1,1,0])
dap.read()
time.sleep(0.2)
dap.close()