summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2012-05-10 23:38:31 +0200
committerNicolas Schodet2012-05-11 00:47:24 +0200
commit922c0e92283a7bf09b79cac4def19674025bb0eb (patch)
treefe1f2f5d7b0780a8e6040539f28514f639038361
parent5602ec143eb0afedda7e0809ddbeca18552b7c69 (diff)
host/proto, digital/ai/tools: stop simulation when a program crashes
-rw-r--r--digital/ai/tools/test_simu.py10
-rw-r--r--host/proto/popen_io.py2
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):