Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.125
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    47

Alle erstellten Inhalte von photron

  1. Die neuen Bricklets sind ab heute bei unserem Bestücker in Produktion.
  2. Wenn es im Brick Viewer geht, dann kann es kein elektrisches Problem sein. Es muss also im Beispiel stecken. Das Beispiel tätigt viele Einstellungen die nicht unbedingt nötig sind. Daher jetzt mal ein einfacheres Beispiel, das den Servo nur ein paar mal hin und her bewegen lässt. Bevor du dieses Beispiel testest solltest du einmal den Servo Brick resetten, damit alle Einstellungen zurückgesetzt werden auf Standard. #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID = "5VF7gc" # Change to your UID from tinkerforge.ip_connection import IPConnection from tinkerforge.brick_servo import Servo import time if __name__ == "__main__": ipcon = IPConnection() # Create IP connection servo = Servo(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected if servo.get_identity().device_identifier != Servo.DEVICE_IDENTIFIER: print("This is not a Servo Brick") else: servo.set_position(0, 9000) servo.enable(0) time.sleep(2) servo.set_position(0, -9000) time.sleep(2) servo.set_position(0, 9000) time.sleep(2) servo.set_position(0, -9000) input('Press key to exit\n') # Use input() in Python 3 ipcon.disconnect()
  3. Die Zeilen stammen auf dem letzten Release der JavaScript Bindings. Das ist nicht die korrigierte Datei aus meinem Post. Teste mal die angehängte Version, bei der jetzt auch die Crypto Verwendung korrigiert ist. Tinkerforge_window_fixes.js
  4. . (Punkt) steht für das aktuelle Verzeichnis, da sich die Angabe des Arbeitsverzeichnis (da wo es angegeben werden kann) immer relative auf das bin Verzeichnis des Programms bezieht. Der absolute Pfad des bin Verzeichnis leitet sich so her: /home/tf/programs/<program-id>/bin Jetzt zum eigentlichen Problem. Wenn du jetzt dein PHP Programm im Web Interface Modus über http://<red-brick>/programs/<program-id>/bin/index.php aufrufst führt Apache das PHP Skript aus. Dabei ist das aktuelle Verzeichnis das bin Verzeichnis des Programms. Das Problem dabei ist jetzt das Apache als User www-data läuft und damit auch das PHP Skript. Das bin Verzeichnis gehört aber dem User tf und www-data hat da keine Schreibrechte. Das werde ich für die nächste RED Brick Image Version per ACL beheben, so das www-data auch im bin Verzeichnis schreiben kann. Bis dahin kannst du den User www-data zur tf Group hinzufügen und dann der tf Group im bin Verzeichnis Schreibrechte geben. Dazu folgende Befehle auf dem RED Brick ausführen (<program-id> durch den Namen deines Programms ersetzen): sudo usermod -a -G tf www-data chmod 0775 /home/tf/programs/<program-id>/bin
  5. Du möchtest also ein Bricklet Kabel trennen. Wenn das nicht schön werden muss kannst du dein eines Bricklet Kabel durch zwei kürzere ersetzen, die über einen Adapter verbunden werden. Also Bricklet <---Kabel1---> Adapter <---Kabel2---> Brick Der Adapter besteht aus zwei Breakout Bricklets die an ihren Stiftleisten 1:1 durchverbunden sind.
  6. Jetzt mal ganz zurück. Wie kompliziert sind den deine Befehle? Hier ein ganz einfacher Ansatz: Du könntest ein IO-4 Bricklet an deine 4 übrigen Pins anschließen. Jeder Pin stellt dabei einen Befehl da. Ein Wechsel von Low auf High an einem Pin bedeutet dann, dass der Befehl für diesen Pin ausgeführt werden soll. Der Wechsel zurück von High auf Low hat keine Bedeutung.
  7. In meiner Zeile 12810 steht ein langer Kommentar. Kannst du mal deine Zeile 12810 mit 5 Zeilen davor und danach posten, damit ich sehe was du meinst. Die letzte Verwendung von window bei mir ist in der getRandomUInt32() Funktion um an die Crypto Funktionen zu kommen. Das muss ich gleich noch ändern.
  8. Habe es gerade so abgeändert im git. Die nächste Version wird diese Änderung beinhalten.
  9. "global.window.Tinkerforge" ist redundant, es reicht auch "global.Tinkerforge" für das gleiche Ergebnis. Damit funktionieren die Bindings hier auch in einem einfachem WebWorker Test. Tinkerforge.js
  10. Wenn es reicht dein Python Script neuzustarten, dann deutet das darauf hin, dass das Problem eher dort liegt. Ich hab mir dein Script angesehen, aber das ist auf den ersten Blick alles in Ordnung. Wenn das Problem auftritt, funktionieren die Buttons dann noch in Brick Viewer?
  11. Da steht sich das perl Package mit einigen anderen Packages auf den Füssen. Ich denke, dass ist ein Bug im perl Package selbst. In dieser Situation verweigert apt-get die Arbeit, weil es erst diese Problem beseitigt haben will. Ich konnte das Problem reproduzieren und so auflösen: sudo dpkg --purge cpanminus sudo dpkg --purge liblocal-lib-perl sudo dpkg --purge libmodule-build-perl sudo dpkg --purge libjson-pp-perl sudo dpkg --purge perl-doc sudo apt-get -f install sudo apt-get upgrade Jetzt stehen sich systemd und systemd-shim im Weg: sudo dpkg --purge systemd-shim sudo apt-get -f install sudo apt-get install systemd-shim sudo apt-get upgrade
  12. Kannst du denn noch auf das LCD schreiben, wenn die Callbacks nicht mehr funktionieren? Hängt das funktionierende Moisture Bricklet am gleichen Brick wie das LCD 20x4 Bricklet? Was musst du tun, damit die Callbacks wieder funktionieren? Den Brick neustarten, oder dein Programm neustarten, oder etwas anderes?
  13. Hier hat das mal wer für AutoIt gemacht: http://www.tinkerunity.org/forum/index.php/topic,2706.msg17355.html
  14. Wird es, mit fest 3,3V.
  15. What's the SamplingPeriod? One different between WIFI and USB is the throughput. Typically, WIFI has less throughput than USB. If your SamplingPeriod is very small then the Bricklets might try to send more callbacks then the WIFI connection can handle. I assume you don't have USB connected to the stack while you're using WIFI, is this correct?
  16. Dass heißt, du brauchst für dein eigentlichen Zeichnen kein OpenGL, sondern es geht dir darum die GPU zu verwenden. Für dein eigentliches Zeichnen würde auch QPainter reichen? Hast du mal eine Kombination aus QOpenGLWidget und QPainter getestet, wie hier beschrieben: http://doc.qt.io/qt-5/qopenglwidget.html#painting-techniques
  17. Okay, jetzt können wir sicher sein, dass das Problem nicht von deinen OpenGL Headern kommt. Ich habe mit die Fehler noch mal genauer angesehen. Ich denke, dass du da zwei Probleme hast: Zum einen sind die OpenGL Header zu neu oder die Qt5 Version zu alt. Die OpenGL Header beinhalten Definitionen für OpenGL 4.3, damit scheint die Qt5 Version nicht zurecht zu kommen. Den einen Definitions-Konflikt kannst du möglicherweise lösen indem du diese Zeile #define GL_KHR_debug 1 in deinen Code einfügst, bevor zu irgendwelche anderen Header includest. Zum anderen will Qt5 auf dem RED Brick OpenGL ES 2 verwenden, du willst aber normales OpenGL verwenden. Das scheint sich auch nicht zu vertragen. Brauchst du normales OpenGL, oder könntest du auch OpenGL ES 2 verwenden?
  18. Aus der Make Ausgabe sehe ich folgendes: - dein Programm bringt mindestens gl.h und glu.h mit - auf deinem RED Brick sind /usr/include/GL/gl.h, /usr/include/GL/glext.h, usw. vorhanden Teste bitte mal folgendes: - alle OpenGL Header (gl.h, glu.h, usw.) aus deinem Programmverzeichnis entfernen - in deinem Programm Code alle Includes für OpenGL (#include "gl.h" usw.) durch Includes dieser Form ersetzen: #include <GL/gl.h> Dadurch werden dann die OpenGL Header verwendet, die der RED Brick schon mitbringt. Denn es sieht für mich immer noch so aus als ob dein Problem ist, dass deine OpenGL Header und die vom RED Brick sich durch die Verwendung den Qt OpenGL Modules vermischen und die Fehler erzeugen.
  19. Die OpenGL Header kommen also vom RED Brick aus /usr/include? Selbst wenn dem so ist, lösch die mal aus deinem Verzeichnis. Es muss dennoch gehen.
  20. Schau an, lauter Compile Fehler im Zusammenhang mit OpenGL. Such mal in der Ausgabe nach "error:". Wenn ich das richtig sehe ist an allen Fehlern "../bin/glu.h" beteiligt. Hast du einen besonderen Grund warum du deinen eigenen glu.h (und wahrscheinlich auch gl.h) mitbringst? Entferne mal alle OpenGL Header die du selbst mitbringst, damit nur die aus /usr/include verwendet werden. Ich vermute, dass das Gemisch aus deinen und den System OpenGL Headern das Problem ist.
  21. Tja, sieht an sich gut aus. So wie das Makefile gebaut ist müsste es alle Befehle ausgeben bevor es sie ausführt. Zeig mal die komplette Ausgabe von make. Falls es nicht den g++ Befehl anzeigt bevor es in ausführt, dann kannst du das Makefile editierten, um an diese Information zu kommen. In Zeile 428 echo ">>> $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o ../bin/main.cpp <<<" zwischen diesen beiden Zeilen einfügen: ../bin/bricklet_io4.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o ../bin/main.cpp Achte, darauf, dass die echo Zeile auch mit einem Tab eingerückt ist wie die $(CXX) Zeile. Worauf ich hinaus will. Normalerweise solltest du von g++ selbst eine Fehlermeldung bekommen. Das scheint aber hier nicht der Fall zu sein, sondern make gibt selbst diesen komischen Fehler aus. Daher meine Vermutung, dass der g++ Befehl an sich kaputt ist. Du kannst auch mal "make -d" ausführen, damit make dir mehr Debug Informationen ausgibt.
  22. Das ist nicht der eigentliche Fehler, denke ich. Das muss vorher in der Ausgabe noch der richtige Fehler stehen. Bzw. zeig mal was in Makefile an Zeile 428 (plus 10 Zeilen davor und danach) steht, oder häng das ganze Makefile mal an.
  23. Naja, der gleiche Fehler kann es ja nicht sein. Denn wenn du den windows.h Include entfernst hast, dann kann dieser ja nicht mehr an der Abwesenheit von windows.h scheitern. Tritt der Fehler jetzt an einer anderen Stelle auf, oder hast du nicht die richtige gl.h Datei editiert?
  24. This should just work. WIFI and USB should not make a difference like this, Which callback is this? How do you power the stack when you use the WIFI Extension?
  25. Ist es. gl.h versucht hier auf komische Art und Weise Windows zu detektieren. Wenn WINGDIAPI nicht definiert aber APIENTRY definiert ist dann will es windows.h includen. Dein Problem hier wird sein, dass irgendwer anders APIENTRY definiert. Das gl.h an diesem doch eher generischen Namen versucht Windows zu erkennen ist problematisch. Paste mal den Anfang der gl.h Datei bis zu der Stelle wo der Fehler auftritt, oder häng die ganze gl.h Datei an einen Post an. Entweder wird vor dieser Stelle ein anderer Header included, der APIENTRY definiert, oder APIENTRY wird im Compiler-Befehl per -D Option definiert. Dass gilt es zu finden und zu beheben. Oder du kannst gl.h hacken und #if !(defined(WINGDIAPI) && defined(APIENTRY)) durch #if 0 ersetzen und sehen wie weit du dann kommst.
×
×
  • Neu erstellen...