Files
2023-03-13 09:05:51 +00:00

92 lines
2.9 KiB
Python

#!/usr/bin/env python
# vim:fileencoding=ISO-8859-1
#
# MEEPROMER - Mario's EEPROMer Python script
# Scot W. Stevenson <scot.stevenson@gmail.com>
# Version 0.1 ALPHA 11. April 2013
#
# TODO dislamer
# TODO license
#
# Requires Python 2.7 or later; will not work with Python 3.0 or later
#
# TODO expand doc string below
"""Simple command line tool for connecting to the meeprom EEPROMer.
Packages required that are not part of the Python Standard Library:
PySerial
"""
# Package imports. PySerial is only imported if needed (see below)
import argparse
import sys
# Constants
BAUDRATE = 9600
PROTOCOL_VERSION = None # TODO add protocol version for checks
SERIAL_PORT = '/dev/cu.usbserial-FTAKHP5D'
SERIAL_TIMEOUT = 1 # in seconds
# ----------------------------------------------------------------------
# Parse command line arguments
parser = argparse.ArgumentParser(
description='Meepromer Command Line Interface',
epilog='Read source for further information')
task = parser.add_mutually_exclusive_group()
task.add_argument('-w', '--write', dest="cmd", action="store_const",
const="write", help='Write to EEPROM')
task.add_argument('-r', '--read', dest="cmd", action="store_const",
const="read", help='Read from EEPROM (binary)')
task.add_argument('-d', '--dump', dest="cmd", action="store_const",
const="dump", help='Read from EEPROM (ascii)')
task.add_argument('-D', '--diff', dest="cmd", action="store_const",
const="diff", help='Write bytes that differ')
task.add_argument('-v', '--verify', dest="cmd", action="store_const",
const="verify", help='Compare EEPROM with file')
parser.add_argument('-a', '--address', nargs=1, action='store',
default='0000', help='Starting address (as hex), default 0000')
parser.add_argument('-b', '--bytes', nargs=1, action='store',
default='1', help='Number of bytes to read or write, default 1')
parser.add_argument('-f', '--file', nargs=1, help='Name of data file',
action='store', type=file)
parser.add_argument('-i', '--info', action="store_true",
help='Display status of EEPROMer and quit')
parser.add_argument('-s', '--serial', nargs=1, action='store',
help='Serial port address')
parser.add_argument('-V', '--version', action='version',
version='%(prog)s ALPHA 0.1')
args = parser.parse_args()
# Quit ALPHA version cleanly
# TODO replace
sys.exit(0)
# ----------------------------------------------------------------------
# Setup serial port
def _setup_serial():
"""Set up the serial port. Currently only tested on Mac OS X 10.8"""
try:
import serial
except ImportError:
print "Program requires the PySerial module. Install with"
print " sudo easy_install PySerial [for Mac and Linux]"
print "and try again."
sys.exit(1)
ser = serial.Serial(SERIAL_PORT, BAUDRATE, timeout=1)