added support for windows via libusb-win32

pull/1/head
Jürgen Weigert 6 years ago
parent b6f3d0eb59
commit 660172fbfa
  1. 37
      led-badge-11x44.py

@ -7,11 +7,31 @@
# https://www.sertronics-shop.de/computer/pc-peripheriegeraete/usb-gadgets/led-name-tag-11x44-pixel-usb # https://www.sertronics-shop.de/computer/pc-peripheriegeraete/usb-gadgets/led-name-tag-11x44-pixel-usb
# The font_11x44[] data was downloaded from such a device. # The font_11x44[] data was downloaded from such a device.
# #
# Requires: # Ubuntu install:
# ---------------
# sudo apt-get install python3-usb # sudo apt-get install python3-usb
# #
# Optional for image support: # Optional for image support:
# sudo apt-get install python3-pil # sudo apt-get install python3-pil
#
# Windows install:
# ----------------
# (install python from python.org)
# [x] install Launcher for all Users
# [x] Add Python 3.7 to PATH
# https://sourceforge.net/projects/libusb-win32/ ->
# -> https://kent.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
###### cmd.exe run as Administrator
# cd libusb-win32-bin-1.2.6.0\bin
# xcopy x86\libusb0_x86.dll c:\Windows\System32\libusb0.dll
# xcopy x86\libusb0.sys c:\Windows\System32\drivers\libusb0.sys
# inf-wizard.exe
# -> Click 0x0416 0x5020 LS32 Custm HID
# -> Next -> Next -> Dokumente LS32_Sustm_HID.inf -> Speichern
# -> Install Now... -> Driver Install Complete -> OK
# pip install pyusb
#
# #
# v0.1, 2019-03-05, jw initial draught. HID code is much simpler than expected. # v0.1, 2019-03-05, jw initial draught. HID code is much simpler than expected.
# v0.2, 2019-03-07, jw support for loading bitmaps added. # v0.2, 2019-03-07, jw support for loading bitmaps added.
@ -22,11 +42,13 @@
# v0.6, 2019-03-14, jw Added --mode-help with hints and example for making animations. # v0.6, 2019-03-14, jw Added --mode-help with hints and example for making animations.
# Options -b --blink, -a --ants added. Removed -p from usage. # Options -b --blink, -a --ants added. Removed -p from usage.
# v0.7, 2019-05-20, jw Support pyhidapi, fallback to usb.core. Added python2 compatibility. # v0.7, 2019-05-20, jw Support pyhidapi, fallback to usb.core. Added python2 compatibility.
# v0.8, 2019-05-23, jw Support usb.core on windows via libusb-win32
import sys, os, re, time, argparse import sys, os, re, time, argparse
from array import array from array import array
try: try:
import pyhidapi import pyhidapi
pyhidapi.hid_init()
have_pyhidapi = True have_pyhidapi = True
except: except:
have_pyhidapi = False have_pyhidapi = False
@ -50,7 +72,7 @@ or
sys.exit(1) sys.exit(1)
__version = "0.7" __version = "0.8"
font_11x44 = ( font_11x44 = (
# 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@ -386,7 +408,6 @@ parser.add_argument('--mode-help', action='version', help=argparse.SUPPRESS, ver
""" % sys.argv[0]) """ % sys.argv[0])
args = parser.parse_args() args = parser.parse_args()
if have_pyhidapi: if have_pyhidapi:
pyhidapi.hid_init()
devinfo = pyhidapi.hid_enumerate(0x0416, 0x5020) devinfo = pyhidapi.hid_enumerate(0x0416, 0x5020)
#dev = pyhidapi.hid_open(0x0416, 0x5020) #dev = pyhidapi.hid_open(0x0416, 0x5020)
else: else:
@ -405,8 +426,12 @@ else:
print("No led tag with vendorID 0x0416 and productID 0x5020 found.") print("No led tag with vendorID 0x0416 and productID 0x5020 found.")
print("Connect the led tag and run this tool as root.") print("Connect the led tag and run this tool as root.")
sys.exit(1) sys.exit(1)
if dev.is_kernel_driver_active(0): try:
dev.detach_kernel_driver(0) # win32: NotImplementedError: is_kernel_driver_active
if dev.is_kernel_driver_active(0):
dev.detach_kernel_driver(0)
except:
pass
dev.set_configuration() dev.set_configuration()
print("using [%s %s] bus=%d dev=%d" % (dev.manufacturer, dev.product, dev.bus, dev.address)) print("using [%s %s] bus=%d dev=%d" % (dev.manufacturer, dev.product, dev.bus, dev.address))
@ -432,7 +457,7 @@ needpadding = len(buf)%64
if needpadding: if needpadding:
buf.extend( (0,) * (64-needpadding) ) buf.extend( (0,) * (64-needpadding) )
# print(buf) # print(buf) # array('B', [119, 97, 110, 103, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 126, 255, 255, 255, 255, 126, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
for i in range(int(len(buf)/64)): for i in range(int(len(buf)/64)):
time.sleep(0.1) time.sleep(0.1)
if have_pyhidapi: if have_pyhidapi:

Loading…
Cancel
Save