/[anoncvs]/projects/dispense2/sql-edition/servers/VendingMachine.py


UCC Code Repository

Diff of /projects/dispense2/sql-edition/servers/VendingMachine.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by dagobah, Sat Jun 26 09:38:39 2004 UTC revision 1.4 by dagobah, Sun Jun 27 03:39:41 2004 UTC
# Line 1  Line 1 
1    # vim:ts=4
2  import re, pg  import re, pg
3  from CRC import do_crc  from CRC import do_crc
4  from select import select  from select import select
# Line 83  class VendingMachine: Line 84  class VendingMachine:
84                  elif code == '401':                  elif code == '401':
85                          self.events.append((DOOR, 1))                          self.events.append((DOOR, 1))
86                  elif code == '610':                  elif code == '610':
87                          self.events_append((SWITCH, None))                          self.events.append((SWITCH, None))
88                          self.interpret_switches(text)                          self.interpret_switches(text)
89                  elif code[0] == '2':                  elif code[0] == '2':
90                          self.events.append((KEY, int(code[1:3])))                          self.events.append((KEY, int(code[1:3])))
# Line 140  class VendingMachine: Line 141  class VendingMachine:
141                  (code, string) = self.get_response()                  (code, string) = self.get_response()
142                  return (code == '300', code, string)                  return (code == '300', code, string)
143    
144          def next_event(self):          def next_event(self, timeout = None):
145                  if len(self.events) > 0:                  # we don't want to buffer in the serial port, so we get all the events
146                          ret = self.events[0]                  # we can ASAP.
147                          del self.events[0]                  if len(self.events) > 0: timeout = 0
                         return ret  
                 return None  
   
         def wait_for_events(self, timeout = None):  
                 if self.events: return True  
                 (r, _, _) = select([self.rfh], [], [], timeout)  
                 if not r: return False  
                 event_added = False  
148                  while True:                  while True:
149                      self.get_response(async = True)                          (r, _, _) = select([self.rfh], [], [], timeout)
150                      (r, _, _) = select([self.rfh], [], [], 0)                          if r:
151                      if not r: return event_added                                  self.get_response(async = True)
152                            else:
153                                    break
154                    if len(self.events) == 0: return None
155                    ret = self.events[0]
156                    del self.events[0]
157                    return ret

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

Managed by UCC Webmasters ViewVC Help
Powered by ViewVC 1.1.26