summaryrefslogtreecommitdiff
path: root/serial/tools/miniterm.py
diff options
context:
space:
mode:
Diffstat (limited to 'serial/tools/miniterm.py')
-rw-r--r--serial/tools/miniterm.py102
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()