FlyingDoc Geschrieben January 3, 2019 at 09:54 Share Geschrieben January 3, 2019 at 09:54 Hallo TF Team. Erst einmal ein gesundes und erfolgreiches Jahr 2019! Ich habe folgendes Problem. Ich hab die IDI4 V2 in mein Programm eingebunden und bekomme den Callback nicht zum laufen. Ich benutze die aktuellen Bindings. DIe Firmware ist auch aktuell. Fehler werden nicht produziert. Der Callback wird aber nicht ausgelöst. Ich habe dann den IDI im BrickViewer V2.3.16 angeschaut. Dort werden die Eingänge ebenfalls nicht angezeigt! Egal welchen Zustand sie haben. Die Eingangs LED der DI zeigen aber den jeweiligen Zustand korrekt an. Was mache ich falsch? Das Programm ist in C++ geschrieben. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
remotecontrol Geschrieben January 3, 2019 at 15:37 Share Geschrieben January 3, 2019 at 15:37 Schon mal den Stecker am Bricklet + Master kontrolliert ob alle PINs OK sind? Hatte erst gestern ähnliches Problem mit RemoteSwitch: Bricklet erkannt aber keine Callbacks => der äußere PIN war verbogen. Zum Glück konnte ich den noch richten. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben January 3, 2019 at 16:57 Autor Share Geschrieben January 3, 2019 at 16:57 Hab ich gerade getestet. Kein Erfolg. Auch ein andere Anschluß geht nicht. Und die Pins sind alle OK. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben January 4, 2019 at 13:17 Share Geschrieben January 4, 2019 at 13:17 Ich hab Firmware Version 2.0.0 und 2.0.1 getestet mit diesem Code: #include <stdio.h> #include "ip_connection.h" #include "bricklet_industrial_digital_in_4_v2.h" #define HOST "localhost" #define PORT 4223 #define UID "FrC" // Change XYZ to the UID of your Industrial Digital In 4 Bricklet 2.0 // Callback function for value callback void cb_value(uint8_t channel, bool changed, bool value, void *user_data) { (void)user_data; // avoid unused parameter warning printf("Channel: %u\n", channel); printf("Changed: %s\n", changed ? "true" : "false"); printf("Value: %s\n", value ? "true" : "false"); printf("\n"); } int main(void) { // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object IndustrialDigitalIn4V2 idi4; industrial_digital_in_4_v2_create(&idi4, UID, &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not connect\n"); return 1; } // Don't use device before ipcon is connected // Register value callback to function cb_value industrial_digital_in_4_v2_register_callback(&idi4, INDUSTRIAL_DIGITAL_IN_4_V2_CALLBACK_VALUE, (void *)cb_value, NULL); // Set period for value (channel 1) callback to 0.1s (100ms) industrial_digital_in_4_v2_set_value_callback_configuration(&idi4, 1, 100, true); printf("Press key to exit\n"); getchar(); industrial_digital_in_4_v2_destroy(&idi4); ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally return 0; } Ausgabe: olaf@pc2:~/build20/c$ g++ -pthread example_callback.c bricklet_industrial_digital_in_4_v2.c ip_connection.c -o test In file included from /usr/include/errno.h:25:0, from ip_connection.c:19: /usr/include/features.h:184:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp] # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" ^~~~~~~ olaf@pc2:~/build20/c$ ./test Press key to exit Channel: 1 Changed: true Value: true Channel: 1 Changed: true Value: false Channel: 1 Changed: true Value: true Channel: 1 Changed: true Value: false Mal abgesehen davon das wir in den Bindings irgendwo ein veraltetes define verwenden funktioniert das bei mir ohne Probleme. Im Brick Viewer wird es auch korrekt angezeigt. Was genau konfigurierst du? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben January 4, 2019 at 23:59 Autor Share Geschrieben January 4, 2019 at 23:59 Habe gerade festgestellt , das wenn ich das Bricklet an einen einzelnen Master stecke, geht alles. Da muss ich den Stapel mal auseinander nehmen und einzeln testen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben January 11, 2019 at 20:25 Autor Share Geschrieben January 11, 2019 at 20:25 So. Nach dem ich Zeit zum Testen hab, die Italiener haben gerade bei uns das gesamte Netzwerk im Betrieb geändert, habe ich festgestellt, das es an der RED Img Version liegt. Beim 1.8er gehen die Callback nicht. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben January 12, 2019 at 13:32 Share Geschrieben January 12, 2019 at 13:32 Die Bricklets mit 7-Pol Stecker werden auf dem RED Brick erst seit Brick Daemon Version 2.3.0 unterstützt. D.h. du müsstest entweder den Brick Daemon auf dem RED Brick aktualisieren oder ein RED Brick Image mit Version 1.9 oder höher verwenden. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben January 14, 2019 at 16:22 Autor Share Geschrieben January 14, 2019 at 16:22 Ich arbeite gerade an beiden Varianten. Mit neuem Image (da muß ich aber noch viel anpassen) und mit dem Versuch den Daemon zu aktualisieren. Dabei kommt folgender Fehler. 2019-01-14 17:33:21.309458 <I> <main_linux.c:291> Brick Daemon 2.3.2+redbrick started (pid: 2023, daemonized: 0) brickd: symbol lookup error: brickd: undefined symbol: libusb_free_pollfds Ich habe den Daemon nach eurer Anleitung mit # On RED Brick wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest+redbrick_armhf.deb sudo dpkg -i brickd_linux_latest+redbrick_armhf.deb aktualisisert. Der Daemon startet aber wie schon beschrieben nicht. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben January 15, 2019 at 15:03 Share Geschrieben January 15, 2019 at 15:03 FlyingDoc, auf welcher Image Version tritt das brickd Problem auf? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben January 15, 2019 at 16:53 Share Geschrieben January 15, 2019 at 16:53 Okay, hab das Problem verstanden. Brick Daemon hat nach Version 2.3.0 unter Linux eine unbeabsichtigte Abhängigkeit auf libusb 1.0.20. Das RED Brick Image 1.9 bringt aber nur libusb 1.0.19 mit. Bedingt durch andere Probleme reicht es jetzt nicht aus libusb auf 1.0.20 zu aktualisieren. Es gibt zwei Optionen das jetzt auf die Schnelle zu umgehen: a) Du installierst nicht brickd 2.3.2, sondern 2.3.0. Das ist aktuell die neuste vorkompilierte brickd Version, die auf RED Brick Image 1.9 lauffähig ist. b) Du kompilierst dir brickd aus dem aktuellen Quellcode, dann funktioniert auch brickd 2.3.2 auf RED Brick Image 1.9. Diese Probleme werden in der nächsten brickd version behoben sein. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben January 16, 2019 at 13:54 Autor Share Geschrieben January 16, 2019 at 13:54 Ich habe wie du empfohlen hast den 2.3.0 installiert. Jetzt funktioneren die Callback wieder. Danke. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
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.