Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.125
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    47

Alle erstellten Inhalte von photron

  1. from tinkerforge.ip_connection import Error try: ... except Error as e: if e.value == Error.TIMEOUT: print "timeout error" else: print "other error"
  2. Unsere Dokumentation deckt primär die Verwendung des Systems ab. Zusätzliche ist dokumentiert wie die Firmwares und Plugins kompiliert werden können, wie die Stack und Bricklet Stecker belegt sind und wie das TCP/IP und Modbus Protokoll aussieht: http://www.tinkerforge.com/de/doc/Software/Firmwares_And_Plugins.html http://www.tinkerforge.com/de/doc/Technical_Data.html http://www.tinkerforge.com/de/doc/Low_Level_Protocols/TCPIP.html http://www.tinkerforge.com/de/doc/Low_Level_Protocols/Modbus.html Wie die Firmwares und Plugins intern funktionieren und zusammenspielen ist nicht dokumentiert. Wenn du selbst Firmwares und Plugins schreiben willst muss du dir das leider selbst aneignen. Der Source Code, die Schaltpläne und Layouts sind alle auf GitHub verfügbar. Ansonsten kannst du hier Fragen stellen und wir werden versuchen dir weiterzuhelfen.
  3. Ist eine HashMap ist nicht thread-safe. Versuch mal eine ConcurrentHashMap zu verwenden.
  4. Du kannst den Brick Daemon Service jederzeit neustarten, dass einzige was dabei passieren kann ist, dass kurzzeitig Anfragen oder Antworten verloren gehen. Von welcher Brick Daemon Version sprechen wie hier? Dass das mit Windows-Login oder Logoff zusammenfällt ist verdächtig, könnte aber auch zufällig sein. Hast du mal im Geräte Manager nachgesehen ob der Master Brick noch aufgeführt ist nachdem der Brick Daemon per Enumerate-Disconnected Callback behauptet hat der Master Brick wäre abgesteckt worden? Möglicherweise hat sich Brick Daemon das Abstecken des Stacks eingebildet bzw. sich von Windows in die Irre führen lassen. Wenn das der Fall ist dann könnte ein Neustart des Brick Daemon Services helfen. Danach sollte sich der Stack wieder melden wenn dein Programm ein Enumerate auslöst, oder du im Brick Viewer Disconnect gefolgt von Connect klickst, da das Connect im Brick Viewer ein Enumerate auslöst.
  5. Das spricht erstmal nichts dagegen, dass dieser Aufbau so funktionieren müsste. Etwas ungewöhnlich ist die Art die zweite Reihe der Stacks zu versorgen schon, aber das sollte ohne Probleme funktionieren. Da bleibt mir nur mehr Fragen zu stellen: Die 5,1V sind am USB Anschluss des versorgten Master Bricks gemessen? Wie hast du die gemessen? Du sagtest, dass alle Master Bricks die gleiche Firmware Version haben. Welche Firmware Version? Welche Hardware Version haben die Master Bricks? Wenn du die Stromversorgung des problematischen Stack anschließt dann leuchten die vier blauen LEDs am Master Brick auf. Daran kannst du erkennen, dass der Master Brick gestartet wurde. Leuchten diese LEDs nochmals im Betrieb auf, vielleicht so 20 Sekunden bevor die RS485 Kommunikation wieder funktioniert? Sprich der Master Brick startet sich selbst neu und dann funktioniert es wieder? Was passiert, wenn du in die funktionierenden 1er Stacks noch einen Master Brick dazu steckst? Tritt dann bei diesen das Problem auch auf? Was passiert, wenn du den problematischen 2er Stack mit einer Step-Down Power Supply unterm Stack versorgst, statt über den 5V Ausgang einer externen Step-Down Power Supply?
  6. Step-Down Power Supply ist genau zu Stromversorgung eines Stacks gedacht. Ich fragte so genau nach wegen dem DC Brick, weil das potentiell auch funktionieren könnte unter bestimmten Bedingungen, aber möglicherweise hier die Ursache hätte sein könnte. Nochmal zurück zum Aufbau: Die beiden 3er Stacks habe also jeweils eine Step-Down Power Supply. Der problematische 2er Stack hängt mit seinem USB Anschluss am grünen 5V Ausgang einer dieser Step-Down Power Supplies. Oder wie speist du die 5V da ein? An welcher Step-Down Power Supply hängen dann die beiden 1er Stacks die ohne Probleme funktionieren? Heißt "einzeln" ohne den zweiten Master Brick, oder auch ohne Bricklets? Das hört sich nach einem Stromversorgungsproblem an, wobei mir nicht klar ist warum das die RS485 Kommunikation in dieser Art und Weise beeinflussen sollte. Wie werden die Step-Down Power Supplies versorgt? Alle vom gleichen oder von verschiedenen Netzteilen? Welche Ausgangsspannung und Ausgangsleistung haben die Netzteile?
  7. Welche Abhängigkeiten benötigt werden kann dir z.B. apt-get sagen: apt-get install -s mplayer2 Das -s sorgt dafür, das apt-get die Installation simuliert, also nur sagt was es tun würde, ohne es wirklich zu tun. Dabei wird auch ausgegeben welche Pakete zusätzlich installiert würde.
  8. Du möchtest also mit 3x4 Touch Pad die Funktion des Rotary Potis ändern. Wenn die Helligkeitstaste gedrückt wurde soll ab dann das Poti die Helligkeit einstellen. Wenn die Farbetaste gedrückt wurde soll ab dann das Poti die Farbe einstellen. Das kannst du so lösen: MODE_BRIGHTNESS = 1 MODE_COLOR = 2 def cb_position(self, position): if self.mode == MODE_BRIGHTNESS: self.set_brightness(position + 150) elif self.mode == MODE_COLOR: self.set_color(position + 150) Du hast eine mode Variable die auf MODE_BRIGHTNESS oder MODE_COLOR gesetzt ist. Dein Programm reagiert auf das Drücken der Helligkeits- und Farbetaste und setzt dann mode auf MODE_BRIGHTNESS oder MODE_COLOR. In der cb_position() Funktion wird dann abhängig von mode deine set_brightness() oder set_color() Funktion aufgerufen die dann Helligkeit und Farbe abhängig von der aktuellen Position des Potis einstellen.
  9. Du versorgst den problematischen Stack also über den DC Brick Motor Ausgang mit 5,1V. Wie hast du den DC Brick eingestellt (Velocity, PWM Frequency, Drive Mode, Acceleration) und mit welcher Spannung versorgst du den DC Brick Input Anschluss, damit da am Ende 5,1V am Motoranschluss herauskommen? Aus einem USB Anschluss kommen normalerweise glatte 5V. Beim DC Brick kannst du 5V am Motoranschluss aber eigentlich nur durch PWM erreichen. Es kann sein, dass ein Brick das nicht gut verträgt.
  10. Von deiner Beschreibung des Programms her sollte das funktionieren. Standardmäßig ist die Debounce Period (siehe set_debounce_period) auf 100ms gestellt. Wenn der Endschalter also weniger als 100ms gedrückt ist kann es passieren, dass das nicht als Interrupt angesehen wird. Andere Möglichkeit wäre, dass der Endschalter oder die Verkabelung mechanisch oder elektrisch nicht in Ordnung ist und einen Wackelkontakt hat. Dadurch kann der Endschalter dann gedrückt werden, ohne dass das elektrisch bei der IO-16 ankommt.
  11. Die cb_position() Funktion im Rotaty Poti Callback ist nicht dazu da, um von dir aufgerufen zu werden, sondern um von den Bindings aufgerufen zu werden, wenn ein Position Callback von Bricklet eintrifft. Du hast also keine Kontrolle darüber wann die cb_position() Funktion aufgerufen wird. Wenn du die aktuelle Position abfragen willst kannst du einfach die get_position() Funktion aufrufen, statt den Position Callback zu verwenden, wie in diesem Beispiel: http://www.tinkerforge.com/de/doc/Software/Bricklets/RotaryPoti_Bricklet_Python.html#simple
  12. Versuch mal den untersten Master Brick des problematischen Stacks auszutauschen, um zu sehen ob es an diesem speziellen Brick liegt. Versuch mal den problematischen Stack anders mit Strom zu versorgen, also nicht über einen DC Brick, um zu sehen ob das bei diesem speziellen Stack ein Problem macht. Verusch mal den Aufbau zu verkleinern. Tritt das Problem auch auf, wenn du mit dem problematischen Stack alleine sprichst ohne die anderen Stacks im Bus? Tritt das Problem auch auf, wenn du den problematischen Stack auf Master Brick und RS485 Extension verkleinerst? Bezüglich der Sequence Number meinte ich, ob dir der Stack immer erst wieder bei einer bestimmten Sequence Number antwortet. Also erst wenn du mit er Sequence Number z.B. bei 123 angekommen bist.
  13. Ist an dem Stack der länger braucht irgendetwas anders als an den anderen Stacks? Andere Master Brick Firmware, andere Bricks oder Bricklets im Stack? Mit welcher Baudrate kommunizierst du? Welche Sequence Number hat die erste Antwort die du bekommst? Ist es immer die gleiche Sequence Number?
  14. Du kannst die Packages auf dem PC herunter laden, auf den RED Brick kopieren und dann dort installieren. Hier ist die Liste: libaacs0 libasn1-8-heimdal libass5 libbluray1 libbs2b0 libcdio-cdda1 libcdio-paranoia1 libcdio13 libdv4 libdvdnav4 libdvdread4 libenca0 libfaad2 libfribidi0 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal libldb1 liblircclient0 liblua5.2-0 libmpg123-0 libntdb1 libpostproc52 libquvi-scripts libquvi7 libroken18-heimdal libsmbclient libtalloc2 libtdb1 libtevent0 libvdpau1 libwbclient0 libwind0-heimdal mplayer2 python-talloc samba-libs Diese kannst du für Debian jessie armhf hier herunterladen (<PACKAGE> durch den Package Namen ersetzen): https://packages.debian.org/jessie/armhf/<PACKAGE>/download Und dann auf dem RED Brick mit folgendem Befehl jedes Package einzeln installieren: sudo dpkg -i <PACKAGE> Einfacher ist es aber wenn der RED Brick selbst direkt Internetverbinding hat. Eigentlich kommt dafür nur QEMU in Frage. Das Problem ist QEMU kann zwar ARM emulieren, aber der A10s SoC ist nicht in der QEMU Machine Liste für ARM. Ich habe andere ARM SoCs probiert aber es bootet nicht.
  15. Du kannst VLC nachinstallieren, ich empfehle aber mplayer zum Testen. Am einfachsten ist es wenn der RED Brick eine Internet Verbindung hat und ein Display angeschlossen ist. RED Brick per USB am PC anschließen und im RED Brick Console Tab im Brick Viewer per apt-get mplayer installieren. sudo apt-get update sudo apt-get install mplayer2 Dann mplayer so starten. DISPLAY=:0 mplayer tv:// Wenn alles klappe sollte das Kamerabild auf dem Display angezeigt werden.
  16. Eigentlich sollte eine Logitech Pro 9000 direkt funktionieren. Der uvcvideo Treiber ist vorhanden und damit solle auch eine Logitech Pro 9000 funktionieren. Ich habs gerade mit einer No-Name Webcam probiert und die wird ohne Problem gefunden. Beziehungsweise mal anders: Warum denkst du, dass du erst einen extra Treiber installieren musst?
  17. Das installieren von qt5-default deinstalliert wirklich libsunxi-mali-x11 und xserver-xorg-video-sunximali. Bedingt durch einen Konflikt zwischen libsunxi-mali-x11 und libegl1-mesa-drivers. Das sollte lösbar sein.
  18. Ist das die ApplicationException, die du selbst in refreshCameraList() wirfst, wenn videoDevices.Count == 0 ist?
  19. Der Hardwareaufbau wird für dein Projekt funktionieren. Wenn du den Stapel nicht über den USB Anschluss mit 5V versorgen kannst, dann kannst du alternative eine Step-Down Power Supply drunter stecken und dort 6-27V einspeisen. Wenn du eh schon 24V Gleichstrom für die Heizmatte hast könntest du mit diese 24V auch die Step-Down Power Supply versorgen. Den OK Ausgang kannst du auf viele verschiedene Weisen realisieren. Das hängt dann auch davon ab was wiederum an diesem OK Ausgang angeschlossen werden soll. - Mit dem IO-4 Bricklet kannst du 3,3V (high) oder 0V (low) ausgeben. - Mit dem Dual Relay Bricklet oder Industrial Quad Relay Bricklet kannst du Relaiskontakte öffnen und schließen. - Mit dem Analog Out Bricklet kannst du analog 0-5V ausgeben. Der Sollwert kann auch über verschiedene Arten eingestellt werden. Das hängt dann auch davon ab was wiederum an diesem Sollwert Eingang angeschlossen werden soll. - Mit dem Voltage/Current Bricklet kannst du 0-36V messen und dadurch den Sollwert als analoge Spannung vorgeben. - Ein IO-4 Bricklet kannst du als 4 Bit Eingang verwenden und so 16 Sollwerte abbilden. Mit einem IO-16 Bricklet sogar 65536 Sollwerte. Wenn du genauer beschreiben kannst wie der OK Ausgang und oder Sollwert Eingang funktionieren sollen, bzw. wie sie genau verwendet werden sollen, dann kann ich dir da auch noch deinstallierter Vorschläge machen.
  20. Wie hast du Qt installiert? sudo apt-get install qt5-default Vielleicht ist das Problem dadurch entstanden. Wenn ja, dann können wir das vielleicht auf Dauer beheben.
  21. Ups, falscher URL. Mit dem hier gehts besser: https://github.com/Tinkerforge/red-brick/raw/master/image/patches/root-fs/full/tmp/mali-gpu/xserver-xorg-video-sunximali_1.0-4_armhf.deb Lösch vorher die alte xserver-xorg-video-sunximali_1.0-4_armhf.deb Datei sonst speichert wget die neue mit einem .1 am Ende.
  22. Sehr komisch. Hat mit exakt dem Image der Desktop vorher funktioniert und ist kaputt gegangen, oder hast du den Desktop gerade erst eingeschaltet und er hat direkt nicht funktioniert? Die fehlende Datei kommst aus diesem Package: https://github.com/Tinkerforge/red-brick/blob/master/image/patches/root-fs/full/tmp/mali-gpu/xserver-xorg-video-sunximali_1.0-4_armhf.deb Es reicht wahrscheinlich das Package auf dem RED Brick herunter zu laden und per dpkg erneut zu installierst: wget https://github.com/Tinkerforge/red-brick/raw/master/image/patches/root-fs/full/tmp/mali-gpu/xserver-xorg-video-sunximali_1.0-4_armhf.deb sudo dpkg -i xserver-xorg-video-sunximali_1.0-4_armhf.deb Edit: URL korrigiert.
  23. [ 62.443] (II) LoadModule: "fbturbo" [ 62.445] (WW) Warning, couldn't open module fbturbo [ 62.445] (II) UnloadModule: "fbturbo" [ 62.445] (II) Unloading fbturbo [ 62.445] (EE) Failed to load module "fbturbo" (module does not exist, 0) Der X-Server kann den Framebuffer Driver names fbturbo nicht finden/laden. Der muss hier liegen: /usr/lib/xorg/modules/drivers/fbturbo_drv.so Ist das bei dir der Fall?
  24. Für einen per USB angeschlossenen Brick sendet der Brick Daemon einen Enumerate-Disconnected Callback, wenn er mitbekommt, dass der Brick von USB getrennt wurde. Hast du mal ein anderes USB Kabel und/oder USB Anschluss am PC probiert? Wackelkontakt der USB Verbindung könnte ein Problem sein. Welche Firmware Version ist auf den betroffenen Master Bricks?
  25. Der_Kanzler, das Problem in deinem Programm ist erst einmal, dass du in setNewListBoxContent() versuchst den ersten Eintrag der Liste auszuwählen: lstDeviceList.SelectedIndex = 0 Das erzeugt eine ArgumentOutOfRange Exception, die vermutlich daher kommt, dass videoDevices leer ist und daher kein Eintrag zu lstDeviceList hinzugefügt wird. Was dann dazu führt, das es in lstDeviceList keinen Eintrag an Index 0 gibt, der ausgewählt werden könnte. Du solltest da also auch den Fall behandeln, dass keine Webcam angeschlossen ist. Dann verschwindet dieser Fehler auch auf Windows. Jetzt zum eigentlichen Problem. Ich habe mir gerade kurz AForge angesehen. Hier der wichtige Satz aus deren Dokumentation: DirectShow kommt von Microsoft, sprich ist erstmal Windows spezifisch. Auf dem RED Brick läuft aber Linux. Ich bin noch nicht draus schlau geworden ob Mono das auf Linux unterstütz. Was du mal testen kannst ist in refreshCameraList() die ApplicationException nicht einfach zu fangen und zu ignorieren, sondern wie in setNewListBoxContent() per Messagebox auszugeben. AForge wirft intern auch an ein paar Stellen ApplicationExceptions. Vielleicht wirft AForge eine ApplicationException mit einem passenden Hinweis.
×
×
  • Neu erstellen...