예제 #1
0
async def cond_go(loop):
    ntasks = 7
    barrier = asyn.Barrier(ntasks + 1)
    loop.create_task(asyn.Cancellable(cond01)())
    loop.create_task(asyn.Cancellable(cond03)())
    for n in range(ntasks):
        loop.create_task(cond02(n, barrier))
    await barrier  # All instances of cond02 have completed
    # Test wait_for
    barrier = asyn.Barrier(2)
    loop.create_task(cond04(99, barrier))
    await barrier
    # cancel continuously running coros.
    await asyn.Cancellable.cancel_all()
    print('Done.')
예제 #2
0
async def run_cancel_test3():
    barrier = asyn.Barrier(2)
    loop = asyncio.get_event_loop()
    loop.create_task(asyn.NamedTask('cant3', cant3, barrier=barrier)())
    print('Task cant3 running status', asyn.NamedTask.is_running('cant3'))
    await asyncio.sleep(3)
    print('Task cant3 running status', asyn.NamedTask.is_running('cant3'))
    print('About to cancel task')
    await asyn.NamedTask.cancel('cant3')
    print('Cancelled')
    print('Task cant3 running status', asyn.NamedTask.is_running('cant3'))
    await barrier
    print('tasks were cancelled')
예제 #3
0
async def run_cancel_test2():
    barrier = asyn.Barrier(3)
    loop = asyncio.get_event_loop()
    loop.create_task(asyn.NamedTask('rats_1', rats, 1, barrier=barrier)())
    loop.create_task(asyn.NamedTask('rats_2', rats, 2, barrier=barrier)())
    print('Running two tasks')
    await asyncio.sleep(10)
    print('About to cancel tasks')
    await asyn.NamedTask.cancel(
        'rats_1')  # These will stop when their wait is complete
    await asyn.NamedTask.cancel('rats_2')
    await barrier  # So wait for that to occur.
    print('tasks were cancelled')
예제 #4
0
def barrier_test():
    printexp('''0 0 0 Synch
1 1 1 Synch
2 2 2 Synch
3 3 3 Synch
4 4 4 Synch
''')
    barrier = asyn.Barrier(3, callback, ('Synch',))
    loop = asyncio.get_event_loop()
    for _ in range(3):
        loop.create_task(report(barrier))
    loop.run_until_complete(killer(2))
    loop.close()
예제 #5
0
async def run_sema_test(bounded):
    num_coros = 5
    loop = asyncio.get_event_loop()
    barrier = asyn.Barrier(num_coros + 1)
    if bounded:
        semaphore = asyn.BoundedSemaphore(3)
    else:
        semaphore = asyn.Semaphore(3)
    for n in range(num_coros):
        loop.create_task(run_sema(n, semaphore, barrier))
    await barrier  # Quit when all coros complete
    try:
        semaphore.release()
    except ValueError:
        print('Bounded semaphore exception test OK')
async def main(loop):
    print('Press Pyboard usr button to stop test.')
    bar = asyn.Barrier(4, refresh, (ssd,))
    # Asynchronously flash Pyboard LED's. Because we can.
    loop.create_task(asyn.Cancellable(flash, 1, 200)())
    loop.create_task(asyn.Cancellable(flash, 2, 233)())
    # Task for each meter and GUI LED
    loop.create_task(asyn.Cancellable(meter, bar,  2, 'left')())
    loop.create_task(asyn.Cancellable(meter, bar, 50, 'right')())
    loop.create_task(asyn.Cancellable(meter, bar, 98, 'bass')())
    try:
        while True:
            await asyncio.sleep_ms(800)
            # If necessary wait until all meters have updated.
            # Barrier callback updates display.
            await bar
    except asyn.StopTask:
        ssd.fill(0)  # Clear display at end.
        refresh(ssd)
예제 #7
0
        await rfm9x.receive(timeout=5.0)
        if rfm9x.packet is not None:
            packet_text = str(rfm9x.packet, 'ascii')
            rssi=str(rfm9x.rssi)
            print('Received: {0}'.format(packet_text))
            print("RSSI:",rssi)
    except uasyncio.TimeoutError:
        print('got timeout')

async def foo():
    while True:
        await uasyncio.wait_for(grab_radio(),3)
        await uasyncio.sleep(2)
    

barrier = asyn.Barrier(3,callback,('Synch',))

async def killer(duration):
    await uasyncio.sleep(duration)

def callback(text):
    await rfm9x.receive(timeout=5.0)
    if rfm9x.packet is not None:
        packet_text = str(rfm9x.packet, 'ascii')
        rssi=str(rfm9x.rssi)
        print('Received: {0}'.format(packet_text))
        print("RSSI:",rssi)

async def report(barrier):
    for i in range(5):
        print('{} '.format(i), end='')