Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import sys, os, serial, time
- DEV = '/dev'
- PORTS = [os.path.join(DEV, port) for port in os.listdir(DEV)
- if port.startswith('ttyUSB')]
- ACK = chr(6)
- DATASIZE = 16211
- def read(port, count, checksum = False):
- debug('attempting to read %d bytes from %s' % (count, port))
- data = port.read(count)
- debug('%d bytes of data read: %s' % (len(data), data[:40].encode('hex')))
- if not checksum:
- time.sleep(0.2) # delay before ACK
- port.write(ACK)
- ack = port.read(1)
- if not ack == ACK:
- print >>sys.stderr, '%s seen when ACK (%s) expected' % (repr(ack), repr(ACK))
- sys.exit(1)
- return data
- def write(filename, data):
- if filename is None:
- if sys.stdin.isatty():
- print data.encode('hex')
- else:
- sys.stdout.write(data)
- else:
- outfile = open(filename, 'wb')
- outfile.write(data)
- outfile.close()
- def debug(message):
- if __debug__:
- if message:
- print >>sys.stderr, message
- def comm(filename = None, port = None):
- port = serial.Serial(port or PORTS[0], baudrate = 19200,
- stopbits = 2, timeout = 20)
- port.flushInput()
- raw_input('''Instructions:
- 1) While holding MON-F, power on VX-7R
- 2) Hit <Enter> on computer keyboard
- 3) Within 30 seconds, hit BAND key on VX-7R ''')
- data = read(port, 10)
- data += read(port, 8)
- data += read(port, DATASIZE - 10 - 8, checksum = True)
- port.close()
- write(filename, data)
- if __name__ == '__main__':
- comm(*sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement