Uhlhorn Geschrieben March 2, 2019 at 22:09 Share Geschrieben March 2, 2019 at 22:09 Hi, ich bin ja noch Python-Anfänger. Ich habe nun ein Script geschrieben, welches PIL verwendet. Übertrage ich es auf den Red Brick erhalte ich die Fehlermeldung: ImportError: No module named 'PIL' Wie bekomme ich denn PIL auf den Red Brick? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 3, 2019 at 02:32 Autor Share Geschrieben March 3, 2019 at 02:32 „Wenn andere Bibliotheken, wie die Installierten genutzt werden sollen, dann können diese entweder mit dem eigenen Programm hochgeladen werden oder aber mittels apt-get, pip, pear, npm oder ähnlichen Paketmanagern installiert werden.“ (Gefunden: Doku RED Brick) Leider steht da nicht, wie man diese mit dem eigenen Programm hochlädt. Auch eine Suche bei YouTube und Google hat nichts Brauchbares ergeben. Und die Paketmanager, die ich ausprobiert habe, benötigen Internet, welches aber auf dem Red Brick nicht verfügbar ist. Wie installiere ich das nun? Oder wie lade ich diese Bibliotheken hoch?!? Ich habe schon die Programme aus meinem lokalen PIL-Ordner mit meinem Programm hochgeladen. Es hat leider nichts geholfen. Ich bin jetzt völlig gestrandet und weiß nicht mehr weiter. :-( Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 3, 2019 at 10:28 Share Geschrieben March 3, 2019 at 10:28 Am einfachsten ist es wenn du den RED Brick dafür kurz ins Internet bringst, z.B. mit einem WIFI USB Stick. Ansonsten gibt es hier eine ganz gute Antwort darauf: https://stackoverflow.com/questions/36725843/installing-python-packages-without-internet-and-using-source-code-as-tar-gz-and Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 3, 2019 at 15:58 Autor Share Geschrieben March 3, 2019 at 15:58 Am einfachsten ist es wenn du den RED Brick dafür kurz ins Internet bringst, z.B. mit einem WIFI USB Stick. Das ist es leider nicht, weil ich keinen WLAN-Stick habe. Ich nutze seit Mitte der 90er Jahre Computer von Apple, und Apple brachte als einer der ersten Hersteller weltweit WLAN ausgestattete Rechner auf den Markt. Seit diesem Zeitpunkt hatte ich nie wieder einen Computer ohne WLAN. Daher gab es für mich auch nie die Notwendigkeit einen WLAN-Stick anzuschaffen. Ich müsste erst einen WLAN-Stick bestellen und mehrere Tage auf die Lieferung warten. Und ich bräuchte ihn auch nur für diesen Zeck, sonst nicht. Nein, ich beziehe mich auf Eure Aussage: „Wenn andere Bibliotheken […] genutzt werden sollen, dann können diese […] mit dem eigenen Programm hochgeladen werden […]“ DAS möchte ich gerne machen. Ich weiß aber nicht wie das geht, das wird nämlich nicht erklärt. Den externen Link schaue ich mir natürlich auch an. Danke dafür. ;-) Vielleicht bekomme ich es ja hin. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 3, 2019 at 18:44 Autor Share Geschrieben March 3, 2019 at 18:44 Ich habe inzwischen Pillow-5.4.1.tar.gz heruntergeladen und auf den Red Brick kopiert. Dann musste ich erst mal herausfinden, wo das Teil liegt, denn die Dokumentation erklärt leider nicht, wo die hochgeladenen Dateien liegen (➢Verbesserungsvorschlag!). Falls das hier ein anderer Anfänger liest: Sie liegen im Userverzeichnis unter „programs“ „Name des Programms“/bin/. In meinem Fall heißt das Programm: OLED_Hello_World. Daraus ergibt sich der Pfad: ~/programs/OLED_Hello_World/bin/ Hier bekommt man das File: Pillow 5.4.1 – Download files Dann habe ich, wie auf der Website beschrieben, tar xvfz Pillow-5.4.1.tar.gz erfolgreich ausgeführt. Nun muss ich aber den Namen der .whl-Datei haben, um pip install … ausführen zu können. Woher bekommt man den?!? Also habe ich mit sudo updatedb die Locate-Datenbank aktualisiert und mit locate ".whl" nach den Wheel-Datein gesucht. Doch eine Wheel-Datei für PIL oder Pillow ist nicht dabei. locate „pil*.whl" bringt ebenfalls kein Treffer. Gemäß der Website sollte aber eine .whl-Datei vorhanden sein oder entstehen. Das ist aber nicht der Fall. :-( pip install Pillow wirft auch jedem menge unverständlicher Fehlermeldungen raus. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 4, 2019 at 09:33 Share Geschrieben March 4, 2019 at 09:33 Hab das gerade ausprobiert, am einfachsten ist es wenn du PIL über die Debian Pakete installierst: Diese drei runterladen: * https://packages.debian.org/stretch/armhf/python-pil/download * https://packages.debian.org/stretch/armhf/python3-pil/download * https://packages.debian.org/stretch/armhf/libwebpdemux2/download Das ist PIL für Python 2 und 3 sowie eine Abhängigkeit von beiden. Auf dem RED Brick dann: sudo dpkg -i libwebpdemux2_0.5.2-1_armhf.deb python3-pil_4.0.0-4_armhf.deb python-pil_4.0.0-4_armhf.deb Sieht dann so aus: tf@red-brick:~/pil$ ls libwebpdemux2_0.5.2-1_armhf.deb python3-pil_4.0.0-4_armhf.deb python-pil_4.0.0-4_armhf.deb tf@red-brick:~/pil$ sudo dpkg -i libwebpdemux2_0.5.2-1_armhf.deb python3-pil_4.0.0-4_armhf.deb python-pil_4.0.0-4_armhf.deb Selecting previously unselected package libwebpdemux2:armhf. (Reading database ... 203093 files and directories currently installed.) Preparing to unpack libwebpdemux2_0.5.2-1_armhf.deb ... Unpacking libwebpdemux2:armhf (0.5.2-1) ... Selecting previously unselected package python3-pil:armhf. Preparing to unpack python3-pil_4.0.0-4_armhf.deb ... Unpacking python3-pil:armhf (4.0.0-4) ... Selecting previously unselected package python-pil:armhf. Preparing to unpack python-pil_4.0.0-4_armhf.deb ... Unpacking python-pil:armhf (4.0.0-4) ... Setting up libwebpdemux2:armhf (0.5.2-1) ... Setting up python3-pil:armhf (4.0.0-4) ... Setting up python-pil:armhf (4.0.0-4) ... Processing triggers for libc-bin (2.24-11+deb9u3) ... tf@red-brick:~/pil$ Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 4, 2019 at 18:11 Autor Share Geschrieben March 4, 2019 at 18:11 Ah, danke sehr! :-) Werde ich gleich mal ausprobieren. :-) Wegen der Displays und der IR-Kamera wäre es doch gut, wenn PIL zukünftig vorinstalliert wäre, oder? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 4, 2019 at 22:01 Autor Share Geschrieben March 4, 2019 at 22:01 Es hat funktioniert! :-) Danke sehr! PIL sollte wegen der Displays unbedingt in die Vorinstallation des Red Brick aufgenommen werden. ;-) Und es sollte auch eine Funktion für größere Schriften in die API aufgenommen werden. Mit einer schön großen Schrift sieht das doch gleich viel geiler aus. ;-) Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben March 6, 2019 at 16:34 Share Geschrieben March 6, 2019 at 16:34 Das nächste RED Brick Image wird PIL für Python 2 und 3 vorinstalliert haben. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 6, 2019 at 18:47 Autor Share Geschrieben March 6, 2019 at 18:47 Oh Prima! :-) Und die Displays könnten auch größere Textgrößen haben. So könnte das OLED-Display neben einer Textgröße für 8 Zeilen auch Textgrößen für 4 Zeilen haben, für 3 Zeilen, 2 Zeilen und 1 Zeile. Dann hätte man sehr viel mehr Nutzungsmöglichkeiten. Ich wäre auch bereit die Bitfolgen für die Zeichen zu erstellen. ;-) Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 6, 2019 at 19:12 Share Geschrieben March 6, 2019 at 19:12 Ich muss noch die ganzen LC128x64 draw_*()-Funktionen auf das OLED 128x64 portieren. Siehe hier: https://www.tinkerforge.com/de/doc/Software/Bricklets/LCD128x64_Bricklet_Python.html#BrickletLCD128x64.draw_text Das steht schon auf der TODO-Liste. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 6, 2019 at 19:13 Autor Share Geschrieben March 6, 2019 at 19:13 Prima! :-) Ich freue mich schon. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 11, 2019 at 15:55 Autor Share Geschrieben March 11, 2019 at 15:55 Ich muss noch die ganzen LC128x64 draw_*()-Funktionen auf das OLED 128x64 portieren. Ich teste gerade das Display. Bitte nicht so einen Legotext! Das ist ja grausam! Lieber eine schöne Schrift, so, wie ich es hier im OLED gemacht habe. Ich mache Euch auch gerne die Bitmaps dafür. ;-) Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 11, 2019 at 16:08 Share Geschrieben March 11, 2019 at 16:08 Die Firmware inklusive der Schrift und GUI ist aktuell 22kb groß. Wir haben in Summe 32kb zur Verfügung, davon werden 8kb immer vom Booloader belegt. Es sind also aktuell noch 2kb frei. Eine Bitmap-Schriftart in der Größe ist mehrere hunderte Kilobyte groß. Das wird also nichts . Und nein, ein TrueType-Renderer oder sowas passt auch nicht auf den Mikrocontroller. Aber für hübsche große Schriftarten kann man ja PIL oder ähnliches nutzen! Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 11, 2019 at 19:12 Autor Share Geschrieben March 11, 2019 at 19:12 Ah, okay. Das ist natürlich ein valides Argument. Dass kann ich einsehen. :-) Kann man vielleicht nicht nur die Funktion in die API aufnehmen, die auf einen externen True-Type-Font verweist? Also so in der Art: BrickletLCD128x64.draw_TTCtext(position_x, position_y, font, size, index, encoding, color, text) (Also angelehnt an PIL.ImageFont.truetype) Wobei font ein String mit Pfad und Namen der TTC-Datei ist: font = "Fonts/Menlo.ttc" So was müsste doch gehen, oder? Und kann man den Speicher vielleicht auch vergrößern? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 11, 2019 at 19:37 Share Geschrieben March 11, 2019 at 19:37 Wir können ein Beispiel machen welches diese Funktion implementiert. Das kann aber nicht teil der API sein. Die APIs die wir für die ganzen Programmiersprachen anbieten sind komplett auto-generiert. Wir haben ~120 Produkte und ~17 Programmiersprachen mit je ~3 Beispielen. Wenn du da das Kreuzprodukt draus bildest siehst du wie viel Code das ist. Es wäre unmöglich für uns das per Hand zu schreiben. Alle APIs, die Dokumentationen für die APIs und die meisten Beispiele sind auto-generiert. Der Generator nutzt fürs LCD128x64 diese Config: https://github.com/Tinkerforge/generators/blob/master/configs/bricklet_lcd_128x64_config.py Das sind also alle Informationen die zur Verfügung stehen die API, Beispiele und Dokumentation zu generieren. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 12, 2019 at 02:17 Autor Share Geschrieben March 12, 2019 at 02:17 Ah, okay, verstehe. Das ist nachvollziehbar. Wir können ein Beispiel machen welches diese Funktion implementiert. Das wäre wohl eine große Hilfe, zumindest für Anfänger wie mich. :-) Bei kleinen Texten sehen die True-Type-Fonts ziemlich bescheiden aus, wie ich inzwischen sehe. Dafür müsste man dann doch ein HiRes-Displays haben. Ich muss mal schauen, wie ich das mache. Vielleicht das HDMI-Display – davon kann man aber leider nur eins anschließen. Oder für jeden Wert ein eigenes OLED. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Uhlhorn Geschrieben March 13, 2019 at 21:09 Autor Share Geschrieben March 13, 2019 at 21:09 Produktwunsch: TinkerForge könnte vielleicht ein farbiges HiDPI-Display anbieten, so wie das in diesem USB-Messgerät (siehe Bild). Oder auch E-Ink-Displays, so wie in den beiden anderen Bildern. So was wäre ziemlich geil! :-) Bilder: Aliexpress, Waveshare Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 14, 2019 at 16:16 Share Geschrieben March 14, 2019 at 16:16 Ein E-Paper Bricklet ist bereits in der Entwicklung: https://github.com/Tinkerforge/e-paper-296x128-bricklet 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.