Skip to content

Commit 36ad4d7

Browse files
Better errors
1 parent 326bccd commit 36ad4d7

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

GUI/I2Cscan_window.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ def __init__(self, root, mcp):
2424
self.devices_msg = []
2525

2626
self.addr = tk.IntVar()
27-
self.scan_done = tk.IntVar(self, 0)
27+
28+
# Scan status:
29+
# -1 : in progress
30+
# 0 : done, success
31+
# 1 : done, error
32+
self.scan_status = tk.IntVar()
33+
2834

2935
self.transient(root)
3036
self.grab_set()
@@ -35,23 +41,28 @@ def __init__(self, root, mcp):
3541
self.launch_scan()
3642

3743
self.addr.trace("w", self.update_pb)
38-
self.scan_done.trace("w", self.show_devices)
44+
self.scan_status.trace("w", self.show_devices)
3945

4046

4147
def update_pb(self, *args):
4248
self.pb["value"] = self.addr.get() / 0x80 * 100
4349

4450

4551
def launch_scan(self):
52+
self.scan_status.set(-1)
4653
t = Thread(target=self.scan)
4754
t.start()
4855

4956

5057
def show_devices(self, *args):
51-
if len(self.devices_msg) == 0:
52-
showinfo("I2C Scan result","No devices found.")
53-
else:
54-
showinfo("I2C Scan result","\n".join(self.devices_msg))
58+
if self.scan_status.get() == -1: # still in progress
59+
return
60+
61+
if self.scan_status.get() == 0: # finished successfully
62+
if len(self.devices_msg) == 0:
63+
showinfo("I2C Scan result","No devices found.")
64+
else:
65+
showinfo("I2C Scan result","\n".join(self.devices_msg))
5566

5667
self.destroy()
5768

@@ -66,13 +77,15 @@ def scan(self):
6677
except NotAckError:
6778
pass
6879
except (TimeoutError, LowSCLError, LowSDAError) as e:
69-
showerror(title="I2C error", message=str(e))
7080
logger.warning("Error reading I2C bus." + str(e))
71-
break
81+
showerror(title="I2C error", message=str(e))
82+
self.scan_status.set(1)
83+
return
7284
except RuntimeError as e:
73-
showerror(title="I2C error", message="Error reading I2C bus.")
7485
logger.warning("Error reading I2C bus." + str(e))
75-
break
86+
showerror(title="I2C error", message="Error reading I2C bus.")
87+
self.scan_status.set(1)
88+
return
7689

77-
self.scan_done.set(1)
90+
self.scan_status.set(0)
7891

0 commit comments

Comments
 (0)