# Capture binary dump from badge

from serial import Serial
from sys import argv

# Filename is required as arg1. Output is <name>.dmp
FO = open(argv[1]+".dmp","wb") # badge output writte (binary) to this file
 
#open badge
Badge = Serial('COM6',9600,timeout=1)
Badge.xonxoff=False

print(" - Start SAVE on badge -")
Badge.timeout=10 # Longer timeout, to have chance to push button
Buf = Badge.read(size=8) # header is 6 fixed and 2 byte len
FO.write(Buf)
# We assume header is OK (check TBW)
if len(Buf)!=8 :
  print("no header received")
  exit()
Len = int(Buf[6])+int(Buf[7])*256
print(F"Length x{Buf[6:8].hex()} is {Len} codes, is {Len*2+2} bytes")
Buf = Badge.read(size=Len*2+2)
FO.write(Buf)
# Check Length and Checksum
print(F"Received {len(Buf)} bytes, checksum x{Buf[-2:].hex()}")
Badge.close()
FO.close()
