def test(self): p = EsspApi('') self.assertTrue(p.sync()) self.assertIsInstance(p.poll(), list) self.assertIn(''.join(['%02x' % ord(c) for c in p._serial.sent]), ('7f8001071202', '7f0001071188')) res = p.poll()[0] self.assertEqual(res['status'], p.READ_NOTE) self.assertEqual(res['param'], 0) res = p.poll()[0] self.assertEqual(res['status'], p.READ_NOTE) self.assertEqual(res['param'], 4) res = p.poll()[0] self.assertEqual(res['status'], p.CREDIT_NOTE) self.assertEqual(res['param'], 4) self.assertEqual(p.easy_inhibit([1, 0, 1, 0, 1, 1, 1, 1]), 'f5')
def test(self): p = EsspApi("") self.assertTrue(p.sync()) self.assertIsInstance(p.poll(), list) self.assertIn("".join(["%02x" % ord(c) for c in p._serial.sent]), ("7f8001071202", "7f0001071188")) res = p.poll()[0] self.assertEqual(res["status"], p.READ_NOTE) self.assertEqual(res["param"], 0) res = p.poll()[0] self.assertEqual(res["status"], p.READ_NOTE) self.assertEqual(res["param"], 4) res = p.poll()[0] self.assertEqual(res["status"], p.CREDIT_NOTE) self.assertEqual(res["param"], 4) self.assertEqual(p.easy_inhibit([1, 0, 1, 0, 1, 1, 1, 1]), "f5")
def note_acceptor_worker(queue_request, queue_response, params): verbose = params.verbose if params.test: serial.Serial = SerialMock lh = logging.FileHandler(params.logfile) if params.daemon else logging.StreamHandler(sys.stdout) verbose = verbose and verbose > 1 essp = EsspApi('/dev/ttyACM0', logger_handler=lh, verbose=verbose) logger = essp.get_logger() logger.info('[WORKER] Start') cmds = { 'sync': lambda: essp.sync, 'reset': lambda: essp.reset, 'enable': lambda: essp.enable, 'disable': lambda: essp.disable, 'hold': lambda: essp.hold, 'display_on': lambda: essp.display_on, 'display_off': lambda: essp.display_off, } essp_state = 'disabled' while True: try: data = queue_request.get(block=False) except: pass else: logger.info('[WORKER] command: %s' % data['cmd']) cmd = data['cmd'] res = {'cmd': cmd, 'result': False} if cmd == 'test': res['result'] = True queue_response.put(res) continue if cmd in ('start', 'reset', 'disable'): if essp_state == 'hold': essp.reject_note() essp_state = 'disabled' elif cmd in ('enable',): if essp_state == 'disabled': essp_state = 'enabled' if HOLD_AND_WAIT_ACCEPT_CMD else 'accept' if cmd in cmds: res['result'] = cmds[cmd]()() elif cmd == 'start': res['result'] = bool(essp.sync() and essp.enable_higher_protocol() and essp.disable() and essp.set_inhibits(essp.easy_inhibit([1, 1, 1, 1, 1, 1, 1]), '0')) elif cmd == 'accept': if essp_state == 'hold': essp_state = 'accept' res['result'] = True queue_response.put(res) continue if essp_state in ('enabled', 'accept'): for event in essp.poll(): status = event['status'] param = event['param'] if status == EsspApi.DISABLED: continue if status == EsspApi.READ_NOTE: logger.info('[WORKER] read note %s' % (param if param else 'unknown yet')) if event['param'] and essp_state == 'enabled': essp_state = 'hold' essp.hold() queue_response.put({'cmd': 'poll', 'status': status, 'param': param}) if essp_state == 'hold': essp.hold() sleep(1) if os.getppid() == 1: logger.info('[WORKER] Parent process has terminated') break
import sys import logging import time from essp_api import EsspApi essp = EsspApi('/dev/ttyACM0', logger_handler=logging.StreamHandler(sys.stdout)) essp.sync() essp.enable_higher_protocol() essp.set_inhibits(essp.easy_inhibit([1, 1, 1, 1, 1, 1, 1]), '0') essp.enable() while True: poll = essp.poll() for p in poll: print p if p['status'] == essp.READ_NOTE and p['param'] > 0: for i in range(0, 10): essp.hold() print 'Hold...' time.sleep(0.5) if p['param'] == 2: essp.reject_note() if p['status'] == EsspApi.CREDIT_NOTE: print 'Credit: %s' % p['param'] time.sleep(0.5)
def note_acceptor_worker(queue_request, queue_response, params): verbose = params.verbose lh = logging.FileHandler( params.logfile) if params.daemon else logging.StreamHandler(sys.stdout) essp = EsspApi(params.device, logger_handler=lh, verbose=(verbose and verbose > 1)) logger = essp.get_logger() essp_state = 'disabled' logger.info('[WORKER] Start') cmds = { 'sync': lambda: essp.sync, 'enable': lambda: essp.enable, 'disable': lambda: essp.disable, 'hold': lambda: essp.hold, 'display_on': lambda: essp.display_on, 'display_off': lambda: essp.display_off } credit = 0 while True: try: cmd = queue_request.get(block=False)['cmd'] except: pass else: res = {'cmd': cmd, 'result': False} logger.info('[WORKER] command: %s' % cmd) if cmd in ('start', 'disable'): credit = 0 essp_state = 'disabled' elif cmd == 'enable': essp.sync() essp.enable_higher_protocol() #essp.disable() essp.set_inhibits(essp.easy_inhibit([1, 1, 1, 1, 1, 1, 1]), '0') credit = 0 essp_state = 'enabled' if cmd in cmds: res['result'] = cmds[cmd]()() elif cmd == 'start': credit = 0 res['result'] = bool( essp.sync() and essp.enable_higher_protocol() and essp.disable() and essp.set_inhibits( essp.easy_inhibit([1, 1, 1, 1, 1, 1, 1]), '0')) queue_response.put(res) continue if essp_state == 'enabled': for event in essp.poll(): status = event['status'] param = event['param'] if status == EsspApi.DISABLED: continue if status == EsspApi.CREDIT_NOTE: logger.info('[WORKER] credit %s' % Euros[param]) credit += Euros[param] elif status == EsspApi.READ_NOTE: logger.info('[WORKER] read note %s' % param) queue_response.put({ 'cmd': 'poll', 'status': status, 'param': param, 'credit': credit }) sleep(0.8) if os.getppid() == 1: logger.info('[WORKER] Parent process has terminated') break
def note_acceptor_worker(queue_request, queue_response, params): verbose = params.verbose if params.test: serial.Serial = SerialMock lh = logging.FileHandler( params.logfile) if params.daemon else logging.StreamHandler(sys.stdout) verbose = verbose and verbose > 1 essp = EsspApi('/dev/ttyACM0', logger_handler=lh, verbose=verbose) logger = essp.get_logger() logger.info('[WORKER] Start') cmds = { 'sync': lambda: essp.sync, 'reset': lambda: essp.reset, 'enable': lambda: essp.enable, 'disable': lambda: essp.disable, 'hold': lambda: essp.hold, 'display_on': lambda: essp.display_on, 'display_off': lambda: essp.display_off, } essp_state = 'disabled' while True: try: data = queue_request.get(block=False) except: pass else: logger.info('[WORKER] command: %s' % data['cmd']) cmd = data['cmd'] res = {'cmd': cmd, 'result': False} if cmd == 'test': res['result'] = True queue_response.put(res) continue if cmd in ('start', 'reset', 'disable'): if essp_state == 'hold': essp.reject_note() essp_state = 'disabled' elif cmd in ('enable', ): if essp_state == 'disabled': essp_state = 'enabled' if HOLD_AND_WAIT_ACCEPT_CMD else 'accept' if cmd in cmds: res['result'] = cmds[cmd]()() elif cmd == 'start': res['result'] = bool( essp.sync() and essp.enable_higher_protocol() and essp.disable() and essp.set_inhibits( essp.easy_inhibit([1, 1, 1, 1, 1, 1, 1]), '0')) elif cmd == 'accept': if essp_state == 'hold': essp_state = 'accept' res['result'] = True queue_response.put(res) continue if essp_state in ('enabled', 'accept'): for event in essp.poll(): status = event['status'] param = event['param'] if status == EsspApi.DISABLED: continue if status == EsspApi.READ_NOTE: logger.info('[WORKER] read note %s' % (param if param else 'unknown yet')) if event['param'] and essp_state == 'enabled': essp_state = 'hold' essp.hold() queue_response.put({ 'cmd': 'poll', 'status': status, 'param': param }) if essp_state == 'hold': essp.hold() sleep(1) if os.getppid() == 1: logger.info('[WORKER] Parent process has terminated') break
import time from essp_api import EsspApi print("prueba essp2") essp = EsspApi('/dev/ttyUSB0') print("prueba habilita") essp.enable() while True: print("Escucha") for p in essp.poll(): if p['status'] == essp.CREDIT_NOTE: print 'A note (code=%s) has passed through the device' % p['param'] time.sleep(0.5)