Advertisement
AMDphreak

github_barcode_code

Aug 23rd, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.15 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import usb.core
  3. import usb.util
  4. import sys
  5. import requests
  6. import json
  7. import websocket
  8. import time
  9.  
  10. dev = None
  11. ep = None
  12.  
  13. def connect_to_scanner():
  14.     # find our zebra device
  15.     dev = usb.core.find(idVendor = 0x05e0, idProduct = 0x0600)
  16.  
  17.     # was it found ?
  18.     if dev is None:
  19.         print('Device not found (meaning it is disconnected)')
  20.         return (None, None)
  21.    
  22.     # detach the kernel driver so we can use interface (one user per interface)
  23.     reattach = False
  24.     print(dev.is_kernel_driver_active(0))
  25.     if dev.is_kernel_driver_active(0):
  26.         print("Detaching kernel driver")
  27.         reattach = True
  28.         dev.detach_kernel_driver(0)
  29.    
  30.     # set the active configuration; with no arguments, the first configuration
  31.     # will be the active one
  32.     dev.set_configuration()
  33.  
  34.     # get an endpoint instance
  35.     cfg = dev.get_active_configuration()
  36.     interface_number = cfg[(0, 0)].bInterfaceNumber
  37.     alternate_setting = usb.control.get_interface(dev, interface_number)
  38.     intf = usb.util.find_descriptor(
  39.             cfg, bInterfaceNumber = interface_number,
  40.             bAlternateSetting = alternate_setting
  41.     )
  42.  
  43.     ep = usb.util.find_descriptor(
  44.             intf,
  45.             # match the first OUT endpoint
  46.             custom_match = \
  47.             lambda e: \
  48.                 usb.util.endpoint_direction(e.bEndpointAddress) == \
  49.                 usb.util.ENDPOINT_IN)
  50.  
  51.     assert ep is not None
  52.     return (dev, ep)
  53.  
  54. (dev, ep) = connect_to_scanner()   
  55.  
  56. while 1:
  57.     try:
  58.         # read data
  59.         data = dev.read(ep.bEndpointAddress, ep.wMaxPacketSize * 2, 1000)
  60.         str1 = ''.join(chr(i) if i > 0 and i < 128 else '' for i in data)
  61.         str1 = str1.rstrip()[1:]
  62.         # barcode saved to str
  63.         print(str1)
  64.     except Exception as e:
  65.         error_code = e.args[0]
  66.         # 110 is timeout code, expected
  67.         if error_code == 110:
  68.             print("device connected, waiting for input")
  69.     else:
  70.         print(e)
  71.         print("device disconnected")
  72.         (dev, ep) = connect_to_scanner()
  73.         if dev is None and ep is None:
  74.             time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement