コード例 #1
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testShellCmdWithWaitForEdge(self):
        self.finished = False

        def shellcmd():
            for i in range(50):
                os.system('sleep 0')
                subprocess.call('sleep 0', shell=True)
            self.finished = True

        def makehigh():
            GPIO.output(LOOP_OUT, GPIO.HIGH)

        GPIO.output(LOOP_OUT, GPIO.LOW)
        t1 = Timer(0.1, shellcmd)
        t2 = Timer(0.5, makehigh)
        t1.start()
        t2.start()
        starttime = time.time()
        channel = GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, timeout=1000)
        endtime = time.time()
        self.assertGreater(endtime - starttime, 0.5)
        self.assertLess(endtime - starttime, 0.6)
        self.assertEqual(channel, LOOP_IN)

        # make sure tasks in this test have finished before continuing
        while not self.finished:
            time.sleep(0.1)
コード例 #2
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testWaitForFalling(self):
        def makelow():
            GPIO.output(LOOP_OUT, GPIO.LOW)

        GPIO.output(LOOP_OUT, GPIO.HIGH)
        t = Timer(0.1, makelow)
        t.start()
        GPIO.wait_for_edge(LOOP_IN, GPIO.FALLING)
コード例 #3
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testWaitForRising(self):
        def makehigh():
            GPIO.output(LOOP_OUT, GPIO.HIGH)

        GPIO.output(LOOP_OUT, GPIO.LOW)
        t = Timer(0.1, makehigh)
        t.start()
        GPIO.wait_for_edge(LOOP_IN, GPIO.RISING)
コード例 #4
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def testInvalidBouncetime(self):
     with self.assertRaises(ValueError):
         GPIO.add_event_detect(LOOP_IN, GPIO.RISING, bouncetime=-1)
     with self.assertRaises(ValueError):
         GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, bouncetime=-1)
     GPIO.add_event_detect(LOOP_IN, GPIO.RISING, bouncetime=123)
     with self.assertRaises(RuntimeError):
         GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, bouncetime=321)
     GPIO.remove_event_detect(LOOP_IN)
コード例 #5
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_event_detected(self):
     self.switchcount = 0
     print(
         "\nGPIO.event_detected() switch bounce test.  Press switch at least 10 times and count..."
     )
     GPIO.add_event_detect(SWITCH_PIN, GPIO.FALLING, bouncetime=200)
     while self.switchcount < 10:
         if GPIO.event_detected(SWITCH_PIN):
             self.switchcount += 1
             print('Button press', self.switchcount)
     GPIO.remove_event_detect(SWITCH_PIN)
コード例 #6
0
def issue_154():
    # fails with led off at around 400
    count = 0
    pinRef = GPIO.PWM(LED_PIN, 50)  # create new PWM instance
    while True:
        pinRef.start(10)  # update PWM value
        time.sleep(0.05)
        pinRef.stop()
        GPIO.output(LED_PIN, 0)
        time.sleep(0.05)
        count = count + 1
        print count
コード例 #7
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_switchbounce(self):
     self.switchcount = 0
     print(
         "\nSwitch bounce test.  Press switch at least 10 times and count..."
     )
     GPIO.add_event_detect(SWITCH_PIN,
                           GPIO.FALLING,
                           callback=self.cb,
                           bouncetime=200)
     while self.switchcount < 10:
         time.sleep(1)
     GPIO.remove_event_detect(SWITCH_PIN)
コード例 #8
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def runTest(self):
     GPIO.setmode(GPIO.BOARD)
     GPIO.setup(LED_PIN, GPIO.OUT)
     pwm = GPIO.PWM(LED_PIN, 50)
     with self.assertRaises(RuntimeError):
         pwm2 = GPIO.PWM(LED_PIN, 49)
     GPIO.cleanup()
コード例 #9
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_loopback(self):
     """Test output loops back to another input"""
     GPIO.setup(LOOP_IN, GPIO.IN, pull_up_down=GPIO.PUD_OFF)
     GPIO.setup(LOOP_OUT, GPIO.OUT, initial=GPIO.LOW)
     self.assertEqual(GPIO.input(LOOP_IN), GPIO.LOW)
     GPIO.output(LOOP_OUT, GPIO.HIGH)
     self.assertEqual(GPIO.input(LOOP_IN), GPIO.HIGH)
コード例 #10
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_outputread(self):
     """Test that an output() can be input()"""
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.output(LED_PIN, GPIO.HIGH)
     self.assertEqual(GPIO.input(LED_PIN), GPIO.HIGH)
     GPIO.output(LED_PIN, GPIO.LOW)
     self.assertEqual(GPIO.input(LED_PIN), GPIO.LOW)
コード例 #11
0
def issue_94(cycles):
    # led flickers.  Bug = LED stays off at around cycle 400
    pwm = GPIO.PWM(LED_PIN, 1)
    for i in xrange(cycles):
        print(i)
        pwm.ChangeFrequency(25)
        pwm.start(50)
        time.sleep(1)
        pwm.stop()
コード例 #12
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testWaitForEdgeInLoop(self):
        def makelow():
            GPIO.output(LOOP_OUT, GPIO.LOW)

        count = 0
        timestart = time.time()
        GPIO.output(LOOP_OUT, GPIO.HIGH)
        while True:
            t = Timer(0.1, makelow)
            t.start()
            starttime = time.time()
            channel = GPIO.wait_for_edge(LOOP_IN, GPIO.FALLING, timeout=200)
            endtime = time.time()
            self.assertLess(endtime - starttime, 0.12)
            self.assertEqual(channel, LOOP_IN)
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            count += 1
            if time.time() - timestart > 5 or count > 150:
                break
コード例 #13
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testWaitForEventSwitchbounce(self):
        self.finished = False

        def bounce():
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.2)
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.01)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            self.finished = True

        GPIO.output(LOOP_OUT, GPIO.LOW)
        t1 = Timer(0.1, bounce)
        t1.start()

        starttime = time.time()
        GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, bouncetime=100)
        GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, bouncetime=100)
        finishtime = time.time()
        self.assertGreater(finishtime - starttime, 0.2)
        while not self.finished:
            time.sleep(0.1)
コード例 #14
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testExceptionInCallback(self):
        self.run_cb = False

        def cb(channel):
            with self.assertRaises(ZeroDivisionError):
                self.run_cb = True
                a = 1 / 0

        GPIO.output(LOOP_OUT, GPIO.LOW)
        GPIO.add_event_detect(LOOP_IN, GPIO.RISING, callback=cb)
        time.sleep(0.01)
        GPIO.output(LOOP_OUT, GPIO.HIGH)
        time.sleep(0.01)
        self.assertEqual(self.run_cb, True)
        GPIO.remove_event_detect(LOOP_IN)
コード例 #15
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testShellCmdWithEventCallback(self):
        self.run_cb = False

        def cb(channel):
            self.run_cb = True

        GPIO.output(LOOP_OUT, GPIO.LOW)
        GPIO.add_event_detect(LOOP_IN, GPIO.RISING, callback=cb)
        time.sleep(0.01)

        for i in range(50):
            os.system('sleep 0')
            subprocess.call('sleep 0', shell=True)

        GPIO.output(LOOP_OUT, GPIO.HIGH)
        time.sleep(0.01)
        GPIO.remove_event_detect(LOOP_IN)
        self.assertEqual(self.run_cb, True)
コード例 #16
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testAlternateWaitForEdge(self):
        def makehigh():
            GPIO.output(LOOP_OUT, GPIO.HIGH)

        def makelow():
            GPIO.output(LOOP_OUT, GPIO.LOW)

        GPIO.output(LOOP_OUT, GPIO.LOW)
        t = Timer(0.1, makehigh)
        t2 = Timer(0.15, makelow)
        t.start()
        t2.start()
        GPIO.wait_for_edge(LOOP_IN, GPIO.RISING)
        GPIO.wait_for_edge(LOOP_IN, GPIO.FALLING)
コード例 #17
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def runTest(self):
     GPIO.setmode(GPIO.BOARD)
     GPIO.setup(LED_PIN, GPIO.OUT)
     pwm = GPIO.PWM(LED_PIN, 50)
     pwm.start(100)
     print("\nPWM tests")
     response = input('Is the LED on (y/n) ? ').upper()
     self.assertEqual(response, 'Y')
     pwm.start(0)
     response = input('Is the LED off (y/n) ? ').upper()
     self.assertEqual(response, 'Y')
     print("LED Brighten/fade test...")
     for i in range(0, 3):
         for x in range(0, 101, 5):
             pwm.ChangeDutyCycle(x)
             time.sleep(0.1)
         for x in range(100, -1, -5):
             pwm.ChangeDutyCycle(x)
             time.sleep(0.1)
     pwm.stop()
     response = input('Did it work (y/n) ? ').upper()
     self.assertEqual(response, 'Y')
     GPIO.cleanup()
コード例 #18
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testWaitForEdgeTimeout(self):
        def makehigh():
            GPIO.output(LOOP_OUT, GPIO.HIGH)

        def makelow():
            GPIO.output(LOOP_OUT, GPIO.LOW)

        with self.assertRaises(TypeError):
            GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, timeout="beer")

        with self.assertRaises(ValueError):
            GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, timeout=-1234)

        makelow()
        chan = GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, timeout=200)
        self.assertEqual(chan, None)

        t = Timer(0.1, makehigh)
        t.start()
        chan = GPIO.wait_for_edge(LOOP_IN, GPIO.RISING, timeout=200)
        self.assertEqual(chan, LOOP_IN)
コード例 #19
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def tearDown(self):
     GPIO.cleanup()
コード例 #20
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def makelow():
     GPIO.output(LOOP_OUT, GPIO.LOW)
コード例 #21
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def makehigh():
     GPIO.output(LOOP_OUT, GPIO.HIGH)
コード例 #22
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_cleantuple(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup((LOOP_OUT, ))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup((LED_PIN, ))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.cleanup((LOOP_OUT, LED_PIN))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
コード例 #23
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def runTest(self):
        # Test mode not set (BOARD or BCM) exception
        with self.assertRaises(RuntimeError) as e:
            GPIO.setup(LED_PIN, GPIO.OUT)
        self.assertEqual(
            str(e.exception),
            'Please set pin numbering mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)'
        )

        # Test trying to change mode after it has been set
        GPIO.setmode(GPIO.BCM)
        with self.assertRaises(ValueError) as e:
            GPIO.setmode(GPIO.BOARD)
        GPIO.setup(LED_PIN_BCM, GPIO.IN)
        GPIO.cleanup()

        # Test setting an invalid mode
        with self.assertRaises(ValueError):
            GPIO.setmode(666)

        # Test getmode()
        self.assertEqual(GPIO.getmode(), None)
        GPIO.setmode(GPIO.BCM)
        self.assertEqual(GPIO.getmode(), GPIO.BCM)
        GPIO.setup(LED_PIN_BCM, GPIO.IN)
        GPIO.cleanup()
        GPIO.setmode(GPIO.BOARD)
        self.assertEqual(GPIO.getmode(), GPIO.BOARD)

        # Test not set as OUTPUT message
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(RuntimeError) as e:
            GPIO.output(LED_PIN, GPIO.HIGH)
        self.assertEqual(str(e.exception),
                         'The GPIO channel has not been set up as an OUTPUT')

        # Test setup(..., pull_up_down=GPIO.HIGH) raises exception
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError):
            GPIO.setup(LED_PIN, GPIO.IN, pull_up_down=GPIO.HIGH)

        # Test not valid on a raspi exception
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError) as e:
            GPIO.setup(GND_PIN, GPIO.OUT)
        self.assertEqual(str(e.exception),
                         'The channel sent is invalid on a Raspberry Pi')

        # Test 'already in use' warning
        GPIO.setmode(GPIO.BOARD)
        with open('/sys/class/gpio/export', 'wb') as f:
            f.write(str(LED_PIN_BCM).encode())
        time.sleep(0.2)  # wait for udev to set permissions
        with open('/sys/class/gpio/gpio%s/direction' % LED_PIN_BCM, 'wb') as f:
            f.write(b'out')
        time.sleep(0.2)
        with warnings.catch_warnings(record=True) as w:
            GPIO.setup(LED_PIN, GPIO.OUT)  # generate 'already in use' warning
            self.assertEqual(w[0].category, RuntimeWarning)
        with open('/sys/class/gpio/unexport', 'wb') as f:
            f.write(str(LED_PIN_BCM).encode())
        GPIO.cleanup()

        # test initial value of high reads back as high
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.HIGH)
        self.assertEqual(GPIO.input(LED_PIN), GPIO.HIGH)
        GPIO.cleanup()

        # test initial value of low reads back as low
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.LOW)
        self.assertEqual(GPIO.input(LED_PIN), GPIO.LOW)
        GPIO.cleanup()

        # test pull up/down works
        GPIO.setmode(GPIO.BOARD)
        for i in range(1000):
            GPIO.setup(NC_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
            time.sleep(0.001)
            self.assertEqual(GPIO.input(NC_PIN), GPIO.LOW)
            GPIO.setup(NC_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
            time.sleep(0.001)
            self.assertEqual(GPIO.input(NC_PIN), GPIO.HIGH)
        GPIO.cleanup()

        # test setup of a list of channels
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup([LED_PIN, LOOP_OUT], GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
        GPIO.cleanup()
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError) as e:
            GPIO.setup([LED_PIN, GND_PIN], GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
        self.assertEqual(str(e.exception),
                         'The channel sent is invalid on a Raspberry Pi')
        GPIO.cleanup()

        # test setup of a tuple of channels
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup((LED_PIN, LOOP_OUT), GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
        GPIO.cleanup()

        # test warning when using pull up/down on i2c channels
        GPIO.setmode(GPIO.BOARD)
        if GPIO.RPI_INFO['P1_REVISION'] == 0:  # compute module
            pass  # test not vailid
        else:  # revision 1, 2 or A+/B+
            with warnings.catch_warnings(record=True) as w:
                GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
                self.assertEqual(w[0].category, RuntimeWarning)
            with warnings.catch_warnings(record=True) as w:
                GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
                self.assertEqual(w[0].category, RuntimeWarning)
            GPIO.cleanup()

        # test non integer channel
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError):
            GPIO.setup('d', GPIO.OUT)
        with self.assertRaises(ValueError):
            GPIO.setup(('d', LED_PIN), GPIO.OUT)

        # test setting pull_up_down on an output
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError):
            GPIO.setup(LOOP_OUT, GPIO.OUT, pull_up_down=GPIO.PUD_DOWN)

        # test setting initial on an input
        GPIO.setmode(GPIO.BOARD)
        with self.assertRaises(ValueError):
            GPIO.setup(LOOP_IN, GPIO.IN, initial=GPIO.LOW)
コード例 #24
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def testBothEventDetected(self):
     GPIO.output(LOOP_OUT, GPIO.LOW)
     GPIO.add_event_detect(LOOP_IN, GPIO.BOTH)
     time.sleep(0.01)
     self.assertEqual(GPIO.event_detected(LOOP_IN), False)
     GPIO.output(LOOP_OUT, GPIO.HIGH)
     time.sleep(0.01)
     self.assertEqual(GPIO.event_detected(LOOP_IN), True)
     self.assertEqual(GPIO.event_detected(LOOP_IN), False)
     GPIO.output(LOOP_OUT, GPIO.LOW)
     time.sleep(0.01)
     self.assertEqual(GPIO.event_detected(LOOP_IN), True)
     GPIO.remove_event_detect(LOOP_IN)
コード例 #25
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def testHighLowEvent(self):
     with self.assertRaises(ValueError):
         GPIO.add_event_detect(LOOP_IN, GPIO.LOW)
     with self.assertRaises(ValueError):
         GPIO.add_event_detect(LOOP_IN, GPIO.HIGH)
コード例 #26
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def setUp(self):
     GPIO.setmode(GPIO.BOARD)
コード例 #27
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_cleanone(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.setup(SWITCH_PIN, GPIO.IN)
     GPIO.setup(LOOP_IN, GPIO.IN)
     GPIO.add_event_detect(SWITCH_PIN, GPIO.FALLING)
     GPIO.add_event_detect(LOOP_IN, GPIO.RISING)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(SWITCH_PIN), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LOOP_IN), GPIO.IN)
     self.assertTrue(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertTrue(os.path.exists('/sys/class/gpio/gpio%s' % LOOP_IN_BCM))
     GPIO.cleanup(SWITCH_PIN)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertFalse(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertTrue(os.path.exists('/sys/class/gpio/gpio%s' % LOOP_IN_BCM))
     GPIO.cleanup(LOOP_IN)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertFalse(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertFalse(os.path.exists('/sys/class/gpio/gpio%s' %
                                     LOOP_IN_BCM))
     GPIO.cleanup(LOOP_OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup(LED_PIN)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
コード例 #28
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
    def testAddEventCallback(self):
        def cb(channel):
            self.callback_count += 1

        # falling test
        self.callback_count = 0
        GPIO.output(LOOP_OUT, GPIO.HIGH)
        GPIO.add_event_detect(LOOP_IN, GPIO.FALLING)
        GPIO.add_event_callback(LOOP_IN, cb)
        time.sleep(0.01)
        for i in range(2048):
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.001)
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.001)
        GPIO.remove_event_detect(LOOP_IN)
        self.assertEqual(self.callback_count, 2048)

        # rising test
        self.callback_count = 0
        GPIO.output(LOOP_OUT, GPIO.LOW)
        GPIO.add_event_detect(LOOP_IN, GPIO.RISING, callback=cb)
        time.sleep(0.01)
        for i in range(2048):
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.001)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.001)
        GPIO.remove_event_detect(LOOP_IN)
        self.assertEqual(self.callback_count, 2048)

        # both test
        self.callback_count = 0
        GPIO.output(LOOP_OUT, GPIO.LOW)
        GPIO.add_event_detect(LOOP_IN, GPIO.BOTH, callback=cb)
        time.sleep(0.01)
        for i in range(2048):
            GPIO.output(LOOP_OUT, GPIO.HIGH)
            time.sleep(0.001)
            GPIO.output(LOOP_OUT, GPIO.LOW)
            time.sleep(0.001)
        GPIO.remove_event_detect(LOOP_IN)
        self.assertEqual(self.callback_count, 4096)
コード例 #29
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def test_cleanlist(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup([LOOP_OUT])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup([LED_PIN])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.cleanup([LOOP_OUT, LED_PIN])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
コード例 #30
0
ファイル: test.py プロジェクト: Milliways2/Pi.GPIO
 def testEventOnOutput(self):
     with self.assertRaises(RuntimeError):
         GPIO.add_event_detect(LOOP_OUT, GPIO.FALLING)