diff options
Diffstat (limited to 'serial/tools')
-rw-r--r-- | serial/tools/miniterm.py | 102 |
1 files changed, 62 insertions, 40 deletions
diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py index 626c5aa..6d27ba6 100644 --- a/serial/tools/miniterm.py +++ b/serial/tools/miniterm.py @@ -113,6 +113,7 @@ elif os.name == 'posix': class Console(object): def __init__(self): self.fd = sys.stdin.fileno() + self.old = None def setup(self): self.old = termios.tcgetattr(self.fd) @@ -127,14 +128,14 @@ elif os.name == 'posix': return c def cleanup(self): - termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) + if self.old is not None: + termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) console = Console() def cleanup_console(): console.cleanup() - console.setup() sys.exitfunc = cleanup_console # terminal modes have to be restored on exit... else: @@ -462,13 +463,15 @@ def main(): description = "Miniterm - A simple terminal program for the serial port." ) - parser.add_option("-p", "--port", + group = optparse.OptionGroup(parser, "Port settings") + + group.add_option("-p", "--port", dest = "port", help = "port, a number or a device name. (deprecated option, use parameter instead)", default = DEFAULT_PORT ) - parser.add_option("-b", "--baud", + group.add_option("-b", "--baud", dest = "baudrate", action = "store", type = 'int', @@ -476,49 +479,69 @@ def main(): default = DEFAULT_BAUDRATE ) - parser.add_option("--parity", + group.add_option("--parity", dest = "parity", action = "store", help = "set parity, one of [N, E, O, S, M], default=N", default = 'N' ) - parser.add_option("-e", "--echo", - dest = "echo", - action = "store_true", - help = "enable local echo (default off)", - default = False - ) - - parser.add_option("--rtscts", + group.add_option("--rtscts", dest = "rtscts", action = "store_true", help = "enable RTS/CTS flow control (default off)", default = False ) - parser.add_option("--xonxoff", + group.add_option("--xonxoff", dest = "xonxoff", action = "store_true", help = "enable software flow control (default off)", default = False ) - parser.add_option("--cr", + group.add_option("--rts", + dest = "rts_state", + action = "store", + type = 'int', + help = "set initial RTS line state (possible values: 0, 1)", + default = DEFAULT_RTS + ) + + group.add_option("--dtr", + dest = "dtr_state", + action = "store", + type = 'int', + help = "set initial DTR line state (possible values: 0, 1)", + default = DEFAULT_DTR + ) + + parser.add_option_group(group) + + group = optparse.OptionGroup(parser, "Data handling") + + group.add_option("-e", "--echo", + dest = "echo", + action = "store_true", + help = "enable local echo (default off)", + default = False + ) + + group.add_option("--cr", dest = "cr", action = "store_true", help = "do not send CR+LF, send CR only", default = False ) - parser.add_option("--lf", + group.add_option("--lf", dest = "lf", action = "store_true", help = "do not send CR+LF, send LF only", default = False ) - parser.add_option("-D", "--debug", + group.add_option("-D", "--debug", dest = "repr_mode", action = "count", help = """debug received data (escape non-printable chars) @@ -530,30 +553,12 @@ def main(): default = 0 ) - parser.add_option("--rts", - dest = "rts_state", - action = "store", - type = 'int', - help = "set initial RTS line state (possible values: 0, 1)", - default = DEFAULT_RTS - ) + parser.add_option_group(group) - parser.add_option("--dtr", - dest = "dtr_state", - action = "store", - type = 'int', - help = "set initial DTR line state (possible values: 0, 1)", - default = DEFAULT_DTR - ) - parser.add_option("-q", "--quiet", - dest = "quiet", - action = "store_true", - help = "suppress non error messages", - default = False - ) + group = optparse.OptionGroup(parser, "Hotkeys") - parser.add_option("--exit-char", + group.add_option("--exit-char", dest = "exit_char", action = "store", type = 'int', @@ -561,7 +566,7 @@ def main(): default = 0x1d ) - parser.add_option("--menu-char", + group.add_option("--menu-char", dest = "menu_char", action = "store", type = 'int', @@ -569,6 +574,20 @@ def main(): default = 0x14 ) + parser.add_option_group(group) + + group = optparse.OptionGroup(parser, "Diagnostics") + + group.add_option("-q", "--quiet", + dest = "quiet", + action = "store_true", + help = "suppress non-error messages", + default = False + ) + + parser.add_option_group(group) + + (options, args) = parser.parse_args() options.parity = options.parity.upper() @@ -600,6 +619,7 @@ def main(): if args: parser.error("too many arguments") else: + # noport given on command line -> ask user now if port is None: dump_port_list() port = raw_input('Enter port name:') @@ -651,6 +671,7 @@ def main(): miniterm.serial.setRTS(options.rts_state) miniterm.rts_state = options.rts_state + console.setup() miniterm.start() try: miniterm.join(True) @@ -659,7 +680,8 @@ def main(): if not options.quiet: sys.stderr.write("\n--- exit ---\n") miniterm.join() + #~ console.cleanup() - +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if __name__ == '__main__': main() |