Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.066
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    42

Alle erstellten Inhalte von photron

  1. Bindings: Java 2.0.9 CopyOnWriteArrayList zur Vermeidung von ConcurrentModificationExceptions in der Listener-Behandlung verwendet Download: Java
  2. Ich versuche mal den aktuellen Status zusammenzufassen und noch einige Fragen zu stellen: 1) Du rufst dc_set_velocity() im position Callback des Rotary Potis auf um mit dem Poti die Geschwindigkeit des Motors zu steuern. Wenn du am Poti drehst kommt es vor, dass die IP Connection "hängt" und keine Callbacks mehr ausliefert. Dazu zwei Fragen: 1a) Wie erkennst du das keine Callbacks mehr ausgeliefert werden? Du drehst am Poti, die Motorgeschwindigkeit bleibt aber unverändert? Und du siehst auch die Ausgabe vom printf im position Callback nicht? 1b) Tritt das nur auf wenn du am Poti drehst, oder passiert das auch wenn der Motor nur unverändert vor sich hin läuft? 2) Das Problem tritt häufiger auf wenn der Motor schneller dreht. Dazu auch eine Frage: 2a) Kann das ein EMV Problem sein und der Motor stört den Stack? 3) Was ist mit dem dc_disable() nach dem Enter-Drücken, hängt der immer noch? 4) Der Segfault in deinem Testprogramm war eine Problem mit der Initialisierung im Programm und kein Problem in den Bindings selbst.
  3. Wir haben es aufgegeben zeitliche Angaben zu machen wann neue Produkte herauskommen werden. Es hat sich heraus gestellt, dass wir aus verschiedensten Gründe die gesetzten Termine doch immer wieder verschieben mussten. Die verschiedenen neuen Bricklets sind gerade in der Phase der Konzept- und Prototyp-Entwicklung. Sie werden dann in absehbarer Zeit nach und nach veröffentlicht werden. Habt also etwas Geduld mit uns
  4. Der TEA6420 sieht gut aus. Laut Datenblatt kannst du damit 5 Stereo Eingänge nach belieben auf 4 Stereo Ausgänge verteilen. Gesteuert wird der über I2C, dass heißt du brauchst noch einen Mikrocontroller zum Steuern da dran.
  5. Sind das Anpassungen speziell für dein Projekt, oder sind das Anpassungen für Solaris? Bei letzterem wäre ich daran interessiert diese ins offizielle git zu übernehmen Es war einiges...ich muss mal schauen ob ich den Mitschnitt vom compile noch finde...grob gesagt brauchte man dbus und openusb (da es libusb nicht gibt). Das hört sich nach Arbeit an. Ich nehme mal an das dbus für Hotplug ist. Wie gesagt wäre ich daran interessiert das in die offizielle brickd Codebase aufzunehmen, wenn da nichts dagegen spricht. Da müsste man dann hingehen und wie schon für Hotplug und andere Dinge auch für USB noch einen Abstraktions-Layer einziehen und dann mit libusb und openusb implementieren.
  6. Um auch was zum Topic zu sagen: Hauptsächlich Ubuntu. Zusätzlich ein Windows im Dual-Boot zum Spielen. Zu Linux bin ich vor Jahren im Zuge von Open Source Software-Entwicklung gekommen. Es programmiert sich einfach leichter/schöner/einfacher/etc unter Linux. Auch macht einem ordentliches Package Management das leben leichter Für Cross-Platform Entwicklung dann noch Windows in VM unter Ubuntu.
  7. Sind das Anpassungen speziell für dein Projekt, oder sind das Anpassungen für Solaris? Bei letzterem wäre ich daran interessiert diese ins offizielle git zu übernehmen
  8. Die Bindings speichern den originale Hostnamen als String und verwenden den beim Reconnect. Wenn da ein Caching-Problem beim Auflösen existiert, wüsste ich nicht wie wir das auf der Ebene der Bindings verbessern sollten.
  9. AuronX, deine Erklärung ist vollständig richtig so. Das ist auch in allen Bindungs so, außer PHP, weil das keine Threads hat und eh etwas abweicht. Verbindungsverlust wird an Fehlern beim Schreiben/Lesen des Sockets erkannt. Wenn Auto-Reconnect erlaubt ist (set_auto_reconnect(true)), dann versucht der Callback-Thread nach dem Ausliefern des Diconnected-Callbacks die Verbindung wieder aufzubauen. Dies tut er solange bis eines der folgenden Ereignisse eintritt: a) die Verbindung wurde wieder aufgebaut b) disconnect() wurde aufgerufen, Auto-Reconnect wird abgebrochen c) set_auto_reconnect(false) wurde aufgerufen, Auto-Reconnect wird abgebrochen Es gibt da keine zeitliche Beschränkung, und set_timeout() hat damit nichts zu tun.
  10. Plugins: Voltage/Current Bricklet 2.0.3 Fix voltage and power reached callbacks, were send as current reached callback before Download Plugin: Voltage/Current Bricklet 2.0.3
  11. Plugins: Voltage/Current Bricklet 2.0.3 Voltage und Power Reached Callbacks funktionieren wieder, wurden zuvor fälschlicherweise als Current Reached Callback versandt Download Plugin: Voltage/Current Bricklet 2.0.3
  12. Für einen Stapel wird immer ein Master Brick als unterster Brick benötigt.
  13. Generell gilt, dass du die Kommunikation aus dem Tritt bringen kannst, wenn z.B. in den Headern der Pakete falsche Daten stehen. Das Problem hatten wir ja schon Das die IP Connection "hängt" und keine Callbacks mehr ausliefert, kann daran liegen, dass der Receive Thread nicht mehr richtig funktioniert und keine Callback-Pakete mehr empfängt; oder daran, dass du den Callback Thread in einer deiner Callback-Funktionen blockierst, das gibt dein Testprogramm allerdings nicht her. Dass dc_set_velocity ohne Response-Expected E_OK sagt ist zu erwarten, da E_OK bei Settern ohne Response-Expected soviel heißt wie: ich bin die Anfrage über den Socket losgeworden, mehr nicht. Die beiden Stacktraces im ersten Post sehen normal aus. Dass das dc_disable() beidem Beenden allerdings im ipcon_send_request() ewig auf den socket_mutex wartet ist verdächtig. Wobei da Zeile 1525 nicht passt, es müsste 1523 sein, hast du da vielleicht lokale Änderungen in ip_connection.c, oder verwendest doch nicht die aktuelle Version? Interessant wäre hier ein voller Stacktrace aller Thread um zu sehen, wer da gerade auf dem socket_mutex sitzt. Das du nach dem ipcon_connect() eine sleep(1) brauchst um einen Segfault zu vermeiden ist verdächtig. Eigentlich sollte ipcon_connect() nicht auf das Starten des Receive und des Callback Thread warten müssen. Diese sind nicht an der Initialisierung globaler Datenstrukturen beteiligt. Soll heißen, selbst wenn die beiden Thread nie starten solltest du im schlimmsten Fall einfach keine Antworten auf Getter und keine Callbacks bekommen, aber keinen Segfault. Hast du dir male neben GDB Traces angesehen was Valgrind zu deinem Programm meint.
  14. Das ist komisch. Hast du mal versucht, das Bricklet neu zu flashen?
  15. Geany kannst du an der Stelle nicht mit Visual Studio vergleichen. Visual Studio gibt es ja in verschiedenen Varianten für verschiedene Programmiersprachen wie C++, C#, Visual Basic, etc. Für diese Sprachen bietet es dann auch vollständige Unterstützung im Sinne von Projektverwaltung, Compiler/Debugger Integration etc. Das alles bietet Geany so nicht. Geany ist in dem Sinne nur ein Editor und nicht mit einem Compiler/Debugger integriert und hat daher auch keine Einstellungen dafür. Damit unter C++ #include funktioniert musst du ja die C/C++ Bindings entweder in das gleiche Verzeichnis wie deinen Code packen oder in ein Verzeichnis in dem Visual Studio nachschaut wenn es #include auflöst. Das funktioniert in Python mit import ähnlich. Im ZIP der Python Bindings befindet sich im source Unterordner ein tinkerforge Ordner, den kannst du einfach in den gleichen Ordner wie dein Python Script packen, dann findet Python den. Oder du kannst das tinkerforge.egg installieren, dann findet Python das auch. Details gibts dazu hier: http://www.tinkerforge.com/de/doc/Software/API_Bindings_Python.html#api-bindings-python Das hat im Übrigen nichts mit Geany zu tun, sondern rein mit Python. Die Python Bindings müssen sich einfach nur an einer Stelle befinden an der Python sie findet. Dann kannst du die Beispiele, die sich auch im ZIP befinden in einem Terminal ausführen. In Geany kannst du ein neues Python Script erstellen. Geany muss dazu nichts darüber wissen wo die Python Bindings sind.
  16. Geany ist ja eher ein Editor und keine volle Entwicklungsumgebung. Die Projektverwaltung die Geany bietet ist sehr einfach gehalten. Mir ist dein Problem nicht klar. Du kannst da in Geany nichts einbinden in dem Sinne. Geany erlaubt dir nur einen Satz an irgendwelchen Dateien als ein Projekt zu definieren und es bietet einen einfachen Mechanismus um aus dem GUI heraus Dinge wie make aufzurufen. Geany ist ein guter Editor (ist mein Standardeditor), aber keine vollständige Entwicklungsumgebung für eine spezielle Programmiersprache. Um welche Programmiersprache geht es denn überhaupt?
  17. Der Verbrauch des Industrial Digital 4 In variiert nur minimalst abhängig von der Beschaltung der Eingänge. Das definiere ich jetzt mal als festen Verbrauch Beim Industrial Digital 4 Out wird bei High eine LED im Optokoppler eingeschaltet, das verbraucht dann 2mA pro Ausgang auf High. Das habe ich jetzt in der Doku und im Shop korrigiert. Danke für die Nachfrage.
  18. Ertappt Ich hatte beim Quad Relay nicht im geschalteten Zustand gemessen. Jetzt ist die Angabe wie beim Dual Relay: Pro Relais im geschalteten Zustand. Macht 2mA pro geschaltetem Relais.
  19. Ist jetzt für alle Bricks, Bricklets und Extensions dokumentiert.
  20. Nein, davon kannst du nicht ausgehen. Der Eigenverbrauch liegt deutlich unter 25mA wenn nichts angegeben ist. Ich setze mir mal auf die TODO Liste den Eigenverbrauch für alle Bricklets zu messen bei denen das noch nicht angegeben ist.
  21. Am einfachsten packst du die benötigten Dateien der Bindings in den gleichen Ordner wie den Quelltext deines Programms und fügst sie dem Dev-C++ Projekt hinzu. Das sollte schon reichen. Im Fall der Wetterstation sind das ip_connection.c ip_connection.h bricklet_lcd_20x4.c bricklet_lcd_20x4.h bricklet_ambient_light.c bricklet_ambient_light.h bricklet_barometer.c bricklet_barometer.h bricklet_humidity.c bricklet_humidity.h Falls du dein Programm in C++ statt C schreibst muss du die .c Dateien nach .cpp umbenennen. Ich hab jetzt auch mal hier die Dokumentation dafür erweitert: http://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html#orwell-dev-c
  22. Richtig, das ist exakt das Problem. Danke für's Debuggen und sorry, dass mir das nicht aufgefallen ist. In C/C++ 2.0.8 Bindings ist das jetzt korrigiert.
  23. Bindings: C/C++ 2.0.8 Avoid potential infinite loop in receive thread Handle incoming data correctly if multiple packets are received at once Download: C/C++
  24. Bindings: C/C++ 2.0.8 Möglichkeit einer nicht abbrechenden while Schleife im Receive-Thread unterbunden Eingehende Daten werden korrekt behandelt wenn mehrere Packete auf einmal empfangen werden Download: C/C++
×
×
  • Neu erstellen...