X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FVendingMachine.py;h=26dc0f2f2ba65e1422d57111dd66a861538b3309;hp=4a409221a536f2fed9dbef3273775c7ef7a56218;hb=06e9a8f89f0ca91cf3300483b61ccab29f70cf7a;hpb=7c61f2e7d593f845697c84ba52f7dc58045c78c6 diff --git a/sql-edition/servers/VendingMachine.py b/sql-edition/servers/VendingMachine.py index 4a40922..26dc0f2 100644 --- a/sql-edition/servers/VendingMachine.py +++ b/sql-edition/servers/VendingMachine.py @@ -44,6 +44,7 @@ class VendingMachine: except socket.error: raise VendingException('failed to read input from vending machine') if s == '': raise VendingException('nothing read!') + if (s != '#' and s != '%') and state == 1: prefix += s if s == '\n' or s == '\r': state = 1 prefix = '' @@ -87,9 +88,9 @@ class VendingMachine: def handle_event(self, code, text): if code == '400': - self.events.append((DOOR, 0)) - elif code == '401': self.events.append((DOOR, 1)) + elif code == '401': + self.events.append((DOOR, 0)) elif code == '610': self.events.append((SWITCH, None)) self.interpret_switches(text) @@ -114,7 +115,7 @@ class VendingMachine: def vend(self, item): if not re.search('^[0-9][0-9]$', item): return (False, 'Invalid item requested (%s)'%item) - self.wfh.write(self.authed_message(('V%s\n'%item)+'\n')) + self.wfh.write(self.authed_message(('V%s'%item))+'\n') (code, string) = self.get_response() return (code == '100', code, string) @@ -143,6 +144,7 @@ class VendingMachine: def display(self, string): if len(string) > 10: string = string[0:10] + string = re.sub('(.)\.', lambda match: '.'+match.group(1), string) self.wfh.write('D'+string+'\n') (code, string) = self.get_response() return (code == '300', code, string)