A clone of: https://github.com/nutechsoftware/alarmdecoder This is requires as they dropped support for older firmware releases w/o building in backward compatibility code, and they had previously hardcoded pyserial to a python2 only version.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.4 KiB

  1. #!/usr/bin/env python
  2. import pyad2usb.ad2usb
  3. import time
  4. import signal
  5. import traceback
  6. import sys
  7. running = True
  8. def signal_handler(signal, frame):
  9. global running
  10. running = False
  11. def handle_open(sender, args):
  12. print 'opened', args
  13. def handle_close(sender, args):
  14. print 'closed', args
  15. def handle_read(sender, args):
  16. print 'read', args
  17. def handle_write(sender, args):
  18. print 'write', args
  19. def handle_attached(sender, args):
  20. print 'attached', args
  21. def handle_detached(sender, args):
  22. print 'detached', args
  23. def handle_firmware(stage):
  24. if stage == pyad2usb.ad2usb.util.Firmware.STAGE_BOOT:
  25. print 'Rebooting device..'
  26. handle_firmware.upload_tick = 0
  27. elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_LOAD:
  28. print 'Waiting for boot loader..'
  29. elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_UPLOADING:
  30. if handle_firmware.upload_tick == 0:
  31. sys.stdout.write('Uploading firmware.')
  32. handle_firmware.upload_tick += 1
  33. if handle_firmware.upload_tick % 30 == 0:
  34. sys.stdout.write('.')
  35. sys.stdout.flush()
  36. elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_DONE:
  37. print "\r\nDone!"
  38. signal.signal(signal.SIGINT, signal_handler)
  39. try:
  40. #overseer = pyad2usb.ad2usb.Overseer(attached_event=handle_attached, detached_event=handle_detached)
  41. #overseer.start()
  42. #print pyad2usb.ad2usb.devices.SerialDevice.find_all()
  43. #a2u = overseer.get_device()
  44. #a2u = pyad2usb.ad2usb.Overseer.create()
  45. dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB0')
  46. #dev = pyad2usb.ad2usb.devices.USBDevice()#serial='A101A429', description='FT232R USB UART')
  47. #a2u = pyad2usb.ad2usb.AD2USB(dev)
  48. #a2u.on_open += handle_open
  49. #a2u.on_close += handle_close
  50. #a2u.on_read += handle_read
  51. #a2u.on_write += handle_write
  52. dev.on_open += handle_open
  53. dev.on_close += handle_close
  54. #dev.on_read += handle_read
  55. #dev.on_write += handle_write
  56. #a2u.open()
  57. #a2u.open(baudrate=19200, interface='/dev/ttyUSB0')
  58. #dev.open(baudrate=115200, interface='/dev/ttyUSB5')
  59. #dev.open(baudrate=19200, interface='/dev/ttyUSB0')
  60. dev.open()
  61. pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu_V2_2a_6.hex', handle_firmware)
  62. while running:
  63. time.sleep(0.1)
  64. #a2u.close()
  65. dev.close()
  66. #overseer.close()
  67. except Exception, err:
  68. traceback.print_exc(err)