def test_open_pin_for_writing_somewaitmode_fails(self): with self.assertRaises( error.PinBlockModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wR'),pin.PinWriter) with self.assertRaises( error.PinBlockModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wF'),pin.PinWriter) with self.assertRaises( error.PinBlockModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wB'),pin.PinWriter) with self.assertRaises( error.PinBlockModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'w#'),pin.PinWriter)
def with_open_pin_closed_in_with_clause_exit_cleanup(): outside_value = None with pin.open_pin( pin.PinId.p1_gpio_gen1() ) as p: outside_value = p assert( not p.closed() ) assert( not outside_value.closed() ) assert( outside_value.closed() )
def wait_on_both_GPIO_GCLK_no_timeout(): with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rB' ) as in_pin: in_pin.read() # returns immediately with initial pin state print "Start waiting for 3 state changes on P1 GPIO_GCLK..." first_sample = in_pin.read() second_sample = in_pin.read() third_sample = in_pin.read() print "Read 3 samples from P1 GPIO_GCLK ",\ first_sample, second_sample, third_sample
def wait_on_rising_edge_GPIO_GCLK_no_timeout(): with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rR' ) as in_pin: in_pin.read() # returns immediately with initial pin state print "Start sampling 3 transitions to HIGH state on P1 GPIO_GCLK..." in_pin.read() print "High once" in_pin.read() print "High twice" in_pin.read() print "High thrice" print "P1 GPIO_GCLK gone high 3 times"
def poll_GPIO_GCLK_opened_non_blocking(): INTERVAL = 1.0 # seconds with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rN' ) as in_pin: print "Start sampling GPIO_GCLK (open mode rN) ..." time.sleep(INTERVAL) first_sample = in_pin.read() time.sleep(INTERVAL) second_sample = in_pin.read() time.sleep(INTERVAL) third_sample = in_pin.read() print "Read 3 samples from P1 GPIO_GCLK at approximately", INTERVAL,\ "second intervals:", first_sample, second_sample, third_sample
def poll_GPIO_GCLK_opened_blocking_on_rising_edge(): INTERVAL = 1.0 # seconds with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rR' ) as in_pin: print "Start sampling GPIO_GCLK (open mode rR) ..." in_pin.read() # returns immediately with initial pin state time.sleep(INTERVAL) first_sample = in_pin.read(0) time.sleep(INTERVAL) second_sample = in_pin.read(0) time.sleep(INTERVAL) third_sample = in_pin.read(0) print "Read 3 samples from P1 GPIO_GCLK at approximately", INTERVAL,\ "second intervals:", first_sample, second_sample, third_sample
def wait_on_both_GPIO_GCLK_with_timeouts(): with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rB' ) as in_pin: in_pin.read() # returns immediately with initial pin state print "Waiting for 0.0001s for state change on P1 GPIO_GCLK, timeout probable..." value = in_pin.read( 0.0001 ) if value==None: print "Wait for input change timed out..." else: print "Value read:", value print "Waiting for 10000s for state change on P1 GPIO_GCLK, timeout less probable..." value = in_pin.read( 10000 ) if value==None: print "Wait for input change timed out..." else: print "Value read:", value
def test_open_pin_for_reading_badwaitmode_fails(self): with self.assertRaises( error.PinBlockModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rX'),pin.PinWriter)
def test_open_pin_for_reading_waitonbothedges_creates_PinBlockingReader(self): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rB'),pin.PinBlockingReader)
def test_open_pin_empty_mode_creates_PinReader(self): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),''),pin.PinReader)
def test_open_pin_for_reading_nowaitmode_creates_creates_PinReader(self): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rN'),pin.PinReader)
def test_open_pin_for_writing_nowaitmode_creates_PinWriter(self): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wN'),pin.PinWriter)
def open_pin_explicit_close(): gpio_gen0_out = pin.open_pin(pin.PinId.p1_gpio_gen0(), 'w') assert( not gpio_gen0_out.closed() ) gpio_gen0_out.close() assert( gpio_gen0_out.closed() )
def open_pin_implicit_close( pinId ): pin_in = pin.open_pin(pinId) assert( not pin_in.closed() )
def test_open_pin_bad_rw_mode_fails(self): with self.assertRaises( error.PinDirectionModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'a'),pin.PinWriter)
def test_open_pin_bad_mode_string_fails(self): with self.assertRaises( error.PinOpenModeInvalidError ): self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rN+'),pin.PinWriter)
Developed by R.E. McArdell / Dibase Limited. Copyright (c) 2012 Dibase Limited License: dual: GPL or BSD. ''' import time import sys if __name__ == '__main__': sys.path.insert(0, './..') import dibase.rpi.gpio.pin as pin import dibase.rpi.gpio.gpioerror as error if __name__ == '__main__': try: with pin.open_pin( pin.PinId.p1_gpio_gen1(), 'w' ) as out_pin: out_pin.write(True) # Set GPIO line on pin p1_gpio_gen1 HIGH time.sleep(0.2) out_pin.write(False) # Set GPIO line on pin p1_gpio_gen1 LOW time.sleep(0.2) out_pin.write(1) # Set GPIO line on pin p1_gpio_gen1 HIGH time.sleep(0.2) out_pin.write(0) # Set GPIO line on pin p1_gpio_gen1 LOW time.sleep(0.2) out_pin.write(23) # Set GPIO line on pin p1_gpio_gen1 HIGH time.sleep(0.2) out_pin.write(None) # Set GPIO line on pin p1_gpio_gen1 LOW time.sleep(0.2) out_pin.write('1') # Set GPIO line on pin p1_gpio_gen1 HIGH time.sleep(0.2) out_pin.write('0') # Set GPIO line on pin p1_gpio_gen1 LOW