Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 1 | # |
| 2 | # Simple test program for ctb module: emulate a terminal. |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 3 | # To simplify matters use the python console window for output. |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 4 | # |
| 5 | import ctb |
Jack Jansen | 5a6fdcd | 2001-08-25 12:15:04 +0000 | [diff] [blame] | 6 | from Carbon import Evt |
| 7 | from Carbon import Events |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 8 | import MacOS |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 9 | import sys |
| 10 | |
| 11 | def cb(err): |
| 12 | print 'Done, err=', err |
| 13 | |
| 14 | def main(): |
| 15 | if not ctb.available(): |
| 16 | print 'Communications Toolbox not available' |
| 17 | sys.exit(1) |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 18 | # Disable Python's event processing (we do that) |
Jack Jansen | 7fb76e0 | 1997-06-12 10:49:56 +0000 | [diff] [blame] | 19 | MacOS.SchedParams(1, 0) |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 20 | print 'Minimal terminal emulator V1.0' |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 21 | print '(type command-Q to exit)' |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 22 | print |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 23 | |
| 24 | l = ctb.CMNew('Serial Tool', None) |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 25 | l.Open(10) |
| 26 | l.SetConfig(l.GetConfig() + ' baud 4800') |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 27 | |
| 28 | while 1: |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 29 | l.Idle() # Give time to ctb |
| 30 | |
| 31 | ok, evt = Evt.WaitNextEvent(0xffff, 0) |
| 32 | if ok: |
| 33 | what, message, when, where, modifiers = evt |
| 34 | |
| 35 | if what == Events.keyDown: |
| 36 | # It is ours. Check for command-. to terminate |
| 37 | ch = chr(message & Events.charCodeMask) |
| 38 | if ch == 'q' and (modifiers & Events.cmdKey): |
| 39 | break |
| 40 | l.Write(ch, ctb.cmData, -1, 0) |
| 41 | d, dummy = l.Read(1000, ctb.cmData, 1) |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 42 | if d: |
Jack Jansen | cb2554e | 1997-04-03 14:45:28 +0000 | [diff] [blame] | 43 | for ch in d: |
| 44 | if ch != '\r': |
| 45 | sys.stdout.write(ch) |
| 46 | sys.stdout.flush() |
Jack Jansen | 3b0a5cd | 1995-03-07 16:40:18 +0000 | [diff] [blame] | 47 | l.Close(-1, 1) |
| 48 | del l |
| 49 | |
Jack Jansen | b696b25 | 1995-12-21 15:38:14 +0000 | [diff] [blame] | 50 | main() |