|
|
@ -57,16 +57,6 @@ import time |
|
|
|
from array import array |
|
|
|
from array import array |
|
|
|
from datetime import datetime |
|
|
|
from datetime import datetime |
|
|
|
|
|
|
|
|
|
|
|
# There are 2 possibilities for accessing the device: using hidapi oer usb-core. Here we just try to import both |
|
|
|
|
|
|
|
# and decide later which one to use, see below in LedNameBadge._init_class(). |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
import pyhidapi |
|
|
|
|
|
|
|
except: |
|
|
|
|
|
|
|
pass |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
import usb.core |
|
|
|
|
|
|
|
except: |
|
|
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__version = "0.12" |
|
|
|
__version = "0.12" |
|
|
|
|
|
|
|
|
|
|
@ -409,24 +399,17 @@ class LedNameBadge: |
|
|
|
) |
|
|
|
) |
|
|
|
_have_pyhidapi = False |
|
|
|
_have_pyhidapi = False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
|
|
|
def init_class(): |
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
if sys.version_info[0] < 3: |
|
|
|
if sys.version_info[0] < 3: |
|
|
|
raise Exception("prefer usb.core with python-2.x because of https://github.com/jnweiger/led-badge-ls32/issues/9") |
|
|
|
raise Exception("Prefer usb.core with python-2.x because of https://github.com/jnweiger/led-badge-ls32/issues/9") |
|
|
|
if pyhidapi: |
|
|
|
import pyhidapi |
|
|
|
pyhidapi.hid_init() |
|
|
|
pyhidapi.hid_init() |
|
|
|
LedNameBadge._have_pyhidapi = True |
|
|
|
_have_pyhidapi = True |
|
|
|
print("Pyhidapi detected") |
|
|
|
print("Pyhidapi detected") |
|
|
|
else: |
|
|
|
except Exception: |
|
|
|
raise Exception() |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
if usb.core: |
|
|
|
import usb.core |
|
|
|
print("Pyusb detected") |
|
|
|
print("Pyusb detected") |
|
|
|
else: |
|
|
|
|
|
|
|
raise Exception() |
|
|
|
|
|
|
|
except: |
|
|
|
except: |
|
|
|
print("ERROR: Need the pyhidapi or usb.core module.") |
|
|
|
print("ERROR: Need the pyhidapi or usb.core module.") |
|
|
|
if sys.platform == "darwin": |
|
|
|
if sys.platform == "darwin": |
|
|
@ -505,20 +488,20 @@ or |
|
|
|
sys.exit(1) |
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
|
|
if LedNameBadge._have_pyhidapi: |
|
|
|
if LedNameBadge._have_pyhidapi: |
|
|
|
dev_info = pyhidapi.hid_enumerate(0x0416, 0x5020) |
|
|
|
dev_info = LedNameBadge.pyhidapi.hid_enumerate(0x0416, 0x5020) |
|
|
|
# dev = pyhidapi.hid_open(0x0416, 0x5020) |
|
|
|
# dev = pyhidapi.hid_open(0x0416, 0x5020) |
|
|
|
if dev_info: |
|
|
|
if dev_info: |
|
|
|
dev = pyhidapi.hid_open_path(dev_info[0].path) |
|
|
|
dev = LedNameBadge.pyhidapi.hid_open_path(dev_info[0].path) |
|
|
|
print("using [%s %s] int=%d page=%s via pyHIDAPI" % ( |
|
|
|
print("using [%s %s] int=%d page=%s via pyHIDAPI" % ( |
|
|
|
dev_info[0].manufacturer_string, dev_info[0].product_string, dev_info[0].interface_number, dev_info[0].usage_page)) |
|
|
|
dev_info[0].manufacturer_string, dev_info[0].product_string, dev_info[0].interface_number, dev_info[0].usage_page)) |
|
|
|
else: |
|
|
|
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) |
|
|
|
pyhidapi.hid_write(dev, buf) |
|
|
|
LedNameBadge.pyhidapi.hid_write(dev, buf) |
|
|
|
pyhidapi.hid_close(dev) |
|
|
|
LedNameBadge.pyhidapi.hid_close(dev) |
|
|
|
else: |
|
|
|
else: |
|
|
|
dev = usb.core.find(idVendor=0x0416, idProduct=0x5020) |
|
|
|
dev = LedNameBadge.usb.core.find(idVendor=0x0416, idProduct=0x5020) |
|
|
|
if dev is None: |
|
|
|
if dev is None: |
|
|
|
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.") |
|
|
@ -536,9 +519,6 @@ or |
|
|
|
dev.write(1, buf[i * 64:i * 64 + 64]) |
|
|
|
dev.write(1, buf[i * 64:i * 64 + 64]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LedNameBadge.init_class() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def split_to_ints(list_str): |
|
|
|
def split_to_ints(list_str): |
|
|
|
return tuple([int(x) for x in re.split(r'[\s,]+', list_str)]) |
|
|
|
return tuple([int(x) for x in re.split(r'[\s,]+', list_str)]) |
|
|
|
|
|
|
|
|
|
|
|