Skip to content

Commit

Permalink
Protection against corrupted received data
Browse files Browse the repository at this point in the history
  • Loading branch information
vlachoudis committed Aug 2, 2017
1 parent cd42af6 commit 8610c70
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 19 deletions.
66 changes: 48 additions & 18 deletions Sender.py
Original file line number Diff line number Diff line change
Expand Up @@ -1009,29 +1009,59 @@ def serialIO(self):
for field in fields[1:]:
word = SPLITPAT.split(field)
if word[0] == "MPos":
CNC.vars["mx"] = float(word[1])
CNC.vars["my"] = float(word[2])
CNC.vars["mz"] = float(word[3])
CNC.vars["wx"] = round(CNC.vars["mx"]-CNC.vars["wcox"], CNC.digits)
CNC.vars["wy"] = round(CNC.vars["my"]-CNC.vars["wcoy"], CNC.digits)
CNC.vars["wz"] = round(CNC.vars["mz"]-CNC.vars["wcoz"], CNC.digits)
self._posUpdate = True
try:
CNC.vars["mx"] = float(word[1])
CNC.vars["my"] = float(word[2])
CNC.vars["mz"] = float(word[3])
CNC.vars["wx"] = round(CNC.vars["mx"]-CNC.vars["wcox"], CNC.digits)
CNC.vars["wy"] = round(CNC.vars["my"]-CNC.vars["wcoy"], CNC.digits)
CNC.vars["wz"] = round(CNC.vars["mz"]-CNC.vars["wcoz"], CNC.digits)
self._posUpdate = True
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break
elif word[0] == "F":
CNC.vars["curfeed"] = float(word[1])
try:
CNC.vars["curfeed"] = float(word[1])
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break
elif word[0] == "FS":
CNC.vars["curfeed"] = float(word[1])
CNC.vars["curspindle"] = float(word[2])
try:
CNC.vars["curfeed"] = float(word[1])
CNC.vars["curspindle"] = float(word[2])
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break
elif word[0] == "Bf":
CNC.vars["planner"] = int(word[1])
CNC.vars["rxbytes"] = int(word[2])
try:
CNC.vars["planner"] = int(word[1])
CNC.vars["rxbytes"] = int(word[2])
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break
elif word[0] == "Ov":
CNC.vars["OvFeed"] = int(word[1])
CNC.vars["OvRapid"] = int(word[2])
CNC.vars["OvSpindle"] = int(word[3])
try:
CNC.vars["OvFeed"] = int(word[1])
CNC.vars["OvRapid"] = int(word[2])
CNC.vars["OvSpindle"] = int(word[3])
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break
elif word[0] == "WCO":
CNC.vars["wcox"] = float(word[1])
CNC.vars["wcoy"] = float(word[2])
CNC.vars["wcoz"] = float(word[3])
try:
CNC.vars["wcox"] = float(word[1])
CNC.vars["wcoy"] = float(word[2])
CNC.vars["wcoz"] = float(word[3])
except ValueError:
self.vars["state"] = "Garbage receive %s: %s"(word[0],line)
self.log.put((Sender.MSG_RECEIVE, self.vars["state"]))
break

# Machine is Idle buffer is empty stop waiting and go on
if wait and not cline and fields[0] in ("Idle","Check"):
Expand Down
5 changes: 4 additions & 1 deletion bCNC.py
Original file line number Diff line number Diff line change
Expand Up @@ -1753,7 +1753,10 @@ def profile(self, direction=None, offset=0.0, overcut=False, name=None):
def pocket(self, name=None):
tool = self.tools["EndMill"]
diameter = self.tools.fromMm(tool["diameter"])
stepover = tool["stepover"] / 100.0
try:
stepover = tool["stepover"] / 100.0
except TypeError:
stepover = 0.

self.busy()
blocks = self.editor.getSelectedBlocks()
Expand Down

0 comments on commit 8610c70

Please sign in to comment.