Jump to content

Performance DC Bricklet DC.GPIO_ACTION_CALLBACK_RISING_EDGE


Recommended Posts

Hallo zusammen,

ich hab frisch mit Tinkerforge angefangen und habe eine kleine Frage zum Performance DC Bricklet. Speziell zur GPIO Konfiguration. Dort gibt es die Möglichkeit mit

setGPIOAction(0, BrickletPerformanceDC.GPIO_ACTION_CALLBACK_RISING_EDGE)

einen Callback auf die integrierten GPIOs zu legen und mit diesem dann eine Statusänderung eines angeschlossenen Schalters ohne Polling mitzubekommen. Ich finde in der Doku allerdings nicht wie man sich dann auf diesen Callback registriert. Ich bin in Java/Kotlin unterwegs und da gibt es nur den CurrentVelocity, EmergencyShutdown und VelocityReachedListener.

Was muss ich genau tun um diesen Callback nutzen zu können?

VG

Michael

Link to comment
Share on other sites

In der Tat. Ich hab die gleiche (bzw sehr ähnliche API) in mehreren neuen Bricklets gleichzeitig implementiert. Dabei muss ich die GPIO-Callbacks beim Performance DC Bricklet nicht mitkopiert haben im Generator. Also ein Copy+Paste Fehler in der API...

Das ist natürlich Mist, wird dann mit dem nächsten API-Release gefixt. In der Zwischenzeit könntest du per GetGPIOState die GPIO-Änderung pollen.

Link to comment
Share on other sites

Hab das jetzt soweit implementiert: https://github.com/Tinkerforge/performance-dc-bricklet/commit/510cf95badfb5d4d8d1b5a6cfd5631255020f192

Firmware Version 2.0.1 ist auch bereits released.

Ein komplettes Bindings-Release ist allerdings recht aufwendig, das können wir erst machen wenn mehr Änderungen angefallen sind.

In der Zwischenzeit hab ich dir aber schonmal eine Vorabversion der Java-Bindings angehängt die bereits einen Listener dafür hat.

tinkerforge_java_bindings_2_1_30.zip

Link to comment
Share on other sites

  • 3 months later...

Kann es sein, dass auch im Stepper Bricklet 2.0 der GPIO Callback nicht implementiert ist? Jedenfalls bekomme ich in Python

setGPIOAction(0, BrickletSilentStepperV2.GPIO_ACTION_CALLBACK_RISING_EDGE)

nicht ans Laufen. Das hier ist leider der einzige Foreneintrag den ich zu dem Thema gefunden habe. Auf Github finde ich auch nichts zum GPIO Callback (https://github.com/Tinkerforge/silent-stepper-v2-bricklet/blob/master/software/src/communication.c).

Vielen Dank schonmal für eine Antwort!

Link to comment
Share on other sites

Ist jetzt implementiert: https://github.com/Tinkerforge/silent-stepper-v2-bricklet/commit/81326cd803c8c3bb01846b2ca88c179cc0d698fd

Bitte die Firmware einmal auf 2.0.1 updaten.

Habe mit folgendem Mini-Python-Test getestet:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

HOST = "localhost"
PORT = 4223
UID = "2hvABC" # Change to the UID of your Silent Stepper Bricklet 2.0

import time
import random

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_silent_stepper_v2 import BrickletSilentStepperV2

def cb_gpio_state(state):
    print('ch 0: {0}'.format(state[0]))
    print('ch 1: {0}'.format(state[1]))

if __name__ == "__main__":
    ipcon = IPConnection() # Create IP connection
    ss = BrickletSilentStepperV2(UID, ipcon) # Create device object

    ipcon.connect(HOST, PORT) # Connect to brickd
    # Don't use device before ipcon is connected

    # Register gpio state callback to function cb_gpio_state
    ss.register_callback(ss.CALLBACK_GPIO_STATE, cb_gpio_state)
    ss.set_gpio_action(0, ss.GPIO_ACTION_CALLBACK_RISING_EDGE)
    ss.set_gpio_action(1, ss.GPIO_ACTION_CALLBACK_FALLING_EDGE)

    input("Press key to exit\n")

    ipcon.disconnect()

 

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...