FlyingDoc Posted January 3, 2019 at 09:54 AM Posted January 3, 2019 at 09:54 AM 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. Quote
remotecontrol Posted January 3, 2019 at 03:37 PM Posted January 3, 2019 at 03:37 PM 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. Quote
FlyingDoc Posted January 3, 2019 at 04:57 PM Author Posted January 3, 2019 at 04:57 PM Hab ich gerade getestet. Kein Erfolg. Auch ein andere Anschluß geht nicht. Und die Pins sind alle OK. Quote
borg Posted January 4, 2019 at 01:17 PM Posted January 4, 2019 at 01:17 PM 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? Quote
FlyingDoc Posted January 4, 2019 at 11:59 PM Author Posted January 4, 2019 at 11:59 PM 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. Quote
FlyingDoc Posted January 11, 2019 at 08:25 PM Author Posted January 11, 2019 at 08:25 PM 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. Quote
borg Posted January 12, 2019 at 01:32 PM Posted January 12, 2019 at 01:32 PM 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. Quote
FlyingDoc Posted January 14, 2019 at 04:22 PM Author Posted January 14, 2019 at 04:22 PM 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. Quote
photron Posted January 15, 2019 at 03:03 PM Posted January 15, 2019 at 03:03 PM FlyingDoc, auf welcher Image Version tritt das brickd Problem auf? Quote
photron Posted January 15, 2019 at 04:53 PM Posted January 15, 2019 at 04:53 PM 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. Quote
FlyingDoc Posted January 16, 2019 at 01:54 PM Author Posted January 16, 2019 at 01:54 PM Ich habe wie du empfohlen hast den 2.3.0 installiert. Jetzt funktioneren die Callback wieder. Danke. Quote
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.