term.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from .utils import default_port
  4. try:
  5. from serial.tools.miniterm import Miniterm, console, NEWLINE_CONVERISON_MAP
  6. MINITERM_AVAILABLE=True
  7. except ImportError:
  8. MINITERM_AVAILABLE=False
  9. class McuMiniterm(Miniterm):
  10. def __init__(self, serial):
  11. if not MINITERM_AVAILABLE:
  12. print "Miniterm is not available on this system"
  13. return
  14. self.serial = serial
  15. self.echo = False
  16. self.convert_outgoing = 2
  17. self.repr_mode = 1
  18. self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing]
  19. self.dtr_state = True
  20. self.rts_state = True
  21. self.break_state = False
  22. def terminal(port=default_port()):
  23. if not MINITERM_AVAILABLE:
  24. print "Miniterm is not available on this system"
  25. return False
  26. sp = serial.Serial(port, 9600)
  27. # Keeps things working, if following conections are made:
  28. ## RTS = CH_PD (i.e reset)
  29. ## DTR = GPIO0
  30. sp.setRTS(False)
  31. sp.setDTR(False)
  32. miniterm = MyMiniterm(sp)
  33. log.info('Started terminal. Hit ctrl-] to leave terminal')
  34. console.setup()
  35. miniterm.start()
  36. try:
  37. miniterm.join(True)
  38. except KeyboardInterrupt:
  39. pass
  40. miniterm.join()
  41. sp.close()