haperiebmann Geschrieben February 16, 2021 at 14:20 Geschrieben February 16, 2021 at 14:20 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 Zitieren
borg Geschrieben February 16, 2021 at 17:05 Geschrieben February 16, 2021 at 17:05 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. Zitieren
haperiebmann Geschrieben February 16, 2021 at 20:33 Autor Geschrieben February 16, 2021 at 20:33 Wunderbar, dann mach ich das erstmal so. Wann releast ihr das nächste mal ungefähr? Zitieren
borg Geschrieben February 17, 2021 at 14:45 Geschrieben February 17, 2021 at 14:45 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 Zitieren
haperiebmann Geschrieben February 17, 2021 at 19:55 Autor Geschrieben February 17, 2021 at 19:55 Danke! Zitieren
haperiebmann Geschrieben February 20, 2021 at 19:33 Autor Geschrieben February 20, 2021 at 19:33 FYI, funktioniert Zitieren
LitfaßLars Geschrieben May 23, 2021 at 10:11 Geschrieben May 23, 2021 at 10:11 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! Zitieren
borg Geschrieben May 25, 2021 at 08:03 Geschrieben May 25, 2021 at 08:03 Schaue ich mir gleich an womöglich war da zuviel copy+paste zwischen den Bricklets und dort gibt es das gleiche Problem 😯. Zitieren
borg Geschrieben May 25, 2021 at 13:10 Geschrieben May 25, 2021 at 13:10 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() 1 Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.