From 922c0e92283a7bf09b79cac4def19674025bb0eb Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 10 May 2012 23:38:31 +0200 Subject: host/proto, digital/ai/tools: stop simulation when a program crashes --- digital/ai/tools/test_simu.py | 10 ++++++++-- host/proto/popen_io.py | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/digital/ai/tools/test_simu.py b/digital/ai/tools/test_simu.py index dc8b9481..330541e2 100644 --- a/digital/ai/tools/test_simu.py +++ b/digital/ai/tools/test_simu.py @@ -66,8 +66,14 @@ class TestSimu (InterNode): for prog in r.protos: prog.async = True def prog_read (f, mask, prog = prog): - prog.proto.read () - prog.proto.sync () + try: + prog.proto.read () + prog.proto.sync () + except EOFError: + print "Connection closed" + self.tk.deletefilehandler (prog) + self.play_var.set (0) + self.play () self.tk.createfilehandler (prog, READABLE, prog_read) # Add table. self.table_model = robot_class.table_model.Table () diff --git a/host/proto/popen_io.py b/host/proto/popen_io.py index 0f582802..a9051cc7 100644 --- a/host/proto/popen_io.py +++ b/host/proto/popen_io.py @@ -37,6 +37,8 @@ class PopenIO: def read (self, *args): buf = self.fin.read (*args).replace ('\n', '\r') + if not buf: + raise EOFError return buf def write (self, *args): -- cgit v1.2.3