Lazarus auf Raspberry Pi - welche Möglichkeiten?

Für Fragen von Einsteigern und Programmieranfängern...
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Timm Thaler »

Ja hallo erstmal. Ich bin auf der Suche nach einer Programmierumgebung und Programmiersprache für Raspberry Pi und Android auf das Lazarus-Projekt gestoßen. Da ich vor vielen Jahren mal einiges in Turbo-Pascal (noch auf der DOS-Oberfläche) gemacht habe und seitdem immer auf der Basic-Schiene unterwegs war, sagt mit FreePascal schonmal mehr zu als C und C++, von C# und Java ganz zu schweigen.

Ich habe auch schon ein paar Programme aus den Beispielen ausprobiert und bißchen mit dem GUI-Editor rumgespielt. Das gefällt mir ganz gut. Ich möchte gern einige Programme zur Meßwerterfassung mit dem Raspi bzw. Android (Tablet) sowie etwas in Richtung Gerätekontrolle mit dem Raspi umsetzen, sowie ein paar Spielereien. Angefangen von einem einfachen Terminal für RS232 bis zur Datenerfassung, Speicherung und grafischen Darstellung, auch über Netzwerk.

Dazu wüßte ich gern, ob Folgendes prinzipiell und mit vertretbarem Aufwand auf dem Raspi machbar ist:

1. Abfrage der seriellen Schnittstelle. Scheint laut diversen Forenbeiträgen zu gehen.
2. Ansprechen der GPIO-Pins am Raspi. Dazu habe ich auch Beispielcode gefunden, scheint zu gehen.
3. Datendarstellung, selbstgezeichnet oder mit TGraph?-Library. Sollte gehen.
4. Aufbau einer eigenen GUI im - jetzt schlagt mich nicht - Stil von LCARS. Oder auch einer Steampunk-Oberfläche. Halt eine Oberfläche mit eigenem Design.
5. Anzeige von Bildern (JPEG, PNG).
6. Abspielen von MP3-Dateien, Audioausgabe, Lautstärkeregelung.
7. Abspielen von Internetradio-Stream.
8. Anzeige von Internetseiten, kann ich einen Webbrowser in die GUI integrieren?
9. Abspielen von Videos, Vollbild oder in der GUI.
10. Parsen von XML-Dateien, Schreiben von XML-Dateien. Gibt es einen XML-Parser, oder muß man das von Hand machen?
11. Datenausgabe auf einer Webseite. Also Darstellung von Meßwerten in HTML bzw. Ausgabe als Diagramm-Grafik und Einbinden in eine Webseite, die dann über das Netzwerk aufgerufen werden kann und regelmäßig aktualisiert wird.

Mir geht es um die Realisierbarkeit, (noch) nicht um die Art der Umsetzung. Das suche ich mir dann schon zusammen, wenn ich weiter eingestiegen bin. Also ein "hab ich schon gemacht, geht" oder ein "kannste vergessen, weil..." wäre schön.

Für Android interessiert mich vor allem Ansprechen der seriellen Schnittstelle (Bluetooth-Modul oder USB-seriell-Wandler am OTG) und Ausgabe in eine GUI als Daten (Text) oder Meßwerte (Diagramm).

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Mathias »

Raspi und Lazarus ist ein gutes Team, aber mit Android ist Lazarus eine Zangengeburt, da würde ich doch eher bei Java bleiben, auch wen ich kein Freund von Java bin.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Timm Thaler »

Ups, noch was vergessen:

12. Automatisches Versenden einer Email an vordefinierte Adressen bei bestimmten Ereignissen.

Benutzeravatar
W126
Lazarusforum e. V.
Beiträge: 57
Registriert: Mo 27. Jul 2015, 11:19
OS, Lazarus, FPC: Linux
CPU-Target: Xeon Silver x64
Wohnort: Hofheim am Taunus

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von W126 »

Ich arbeite auch auf der Pascal / Basic Line (Free Pascal, Delphi, LotusScript usw.) bevor Du Dich mit Java beschäftigst, schau Dir mal Basic4Android an. (www.b4x.com)

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Socke »

Timm Thaler hat geschrieben:4. Aufbau einer eigenen GUI im - jetzt schlagt mich nicht - Stil von LCARS. Oder auch einer Steampunk-Oberfläche. Halt eine Oberfläche mit eigenem Design.
Machbar, kann aber kompliziert werden, wenn du die Standardsteuerelemente "umbiegen" möchtest. Wirf mal einen Blick in die Unit themes. Alternativ kannst du vielleicht die notwendigen Steuerelemente nachbauen; wenn du "nur" Bilder anzeigen und Mausklicks verarbeiten möchtest sollte der Aufwand nicht allzu hoch sein. Bei komplexen Steuerelemente (Eingabefelder, Scrollbereich) wird das ganz leicht recht aufwändig.
Timm Thaler hat geschrieben:5. Anzeige von Bildern (JPEG, PNG).
Selbstverständlich; platziere einfach ein TImage auf dem Formular und lade dort in die Eigenschaft Picture das Bild hinein.
Timm Thaler hat geschrieben:6. Abspielen von MP3-Dateien, Audioausgabe, Lautstärkeregelung.
Ein Einstiegspunkt wäre: http://wiki.freepascal.org/Audio_libraries
Timm Thaler hat geschrieben:7. Abspielen von Internetradio-Stream.
Entweder verwendest du ein externes Programm (z.B. mpc) oder du lädst den Stream direkt in deinem Programm herunter und spielst ihn wie oben ab (siehe Netzwerkbibliotheken).
Timm Thaler hat geschrieben:8. Anzeige von Internetseiten, kann ich einen Webbrowser in die GUI integrieren?
Die besten Ergebnisse erzielst du wohl mit Chromium
Timm Thaler hat geschrieben:9. Abspielen von Videos, Vollbild oder in der GUI.
Siehe Video Playback Libraries; vielleicht kannst du hiermit das Abspielen von MP3 bzw. Internetradio direkt mit abdecken?
Timm Thaler hat geschrieben:10. Parsen von XML-Dateien, Schreiben von XML-Dateien. Gibt es einen XML-Parser, oder muß man das von Hand machen?
Ist im Standard vorhande
Timm Thaler hat geschrieben:11. Datenausgabe auf einer Webseite. Also Darstellung von Meßwerten in HTML bzw. Ausgabe als Diagramm-Grafik und Einbinden in eine Webseite, die dann über das Netzwerk aufgerufen werden kann und regelmäßig aktualisiert wird.
Hier gibt es verschiede Ansätze, je nach deinen Anforderung, z.B. Integration mit anderen Webservern oder eingebauter Webserver in dein Programm
Timm Thaler hat geschrieben:12. Automatisches Versenden einer Email an vordefinierte Adressen bei bestimmten Ereignissen.
Hatte ich vor kurzem mit Synapse wie hier beschrieben gemacht.

Alle Aussagen beziehen sich hier auf Standard-Linux (hierbei sollte es keine Unterschiede zwischen x86 und ARM) geben. Bei Android sieht das anders aus, da dies von Lazarus noch nicht voll unterstützt wird.
Auch habe ich nicht alles hiervon selbst verwendet, ich hoffe trotzdessen dir ausreichend Anhaltspunkte geben zu haben ;-)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mse »

Du solltest vermutlich auch MSEide+MSEgui in Betracht ziehen, welches ebenfalls mit Free Pascal kompiliert wird.
MSEgui benutzt zur Graphikausgabe direkt xlib/X11 statt der Verwendung einer zusätzlichen Widgetset Bibliothek. Dadurch laufen MSEgui Programme gerade auf schwächeren Rechnern wie Raspberry Pi wesentlich schneller und brauchen weniger Resourcen.
MSEgui zeichnet alle Bedienelemente selbst und besitzt daher ausgezeichnete skinning-Optionen basierend auf TFrame für die Gestaltung der Umrandung, TFace für den inneren Bereich des widget, TFrameComp und TFaceComp als templates und TSkinController zur zentralen Verwaltung des Aussehens einer Anwendung.
MSEide ermöglicht auch die komfortable cross-Entwicklung und Debugging von Linux PC zu Raspberry Pi, siehe dazu README.TXT.
https://sourceforge.net/projects/mseide-msegui/
Eine entsprechende FPC Raspberry Pi Cross-Umgebung ist hier:
https://sourceforge.net/projects/mseide ... pcrossarm/
Die meisten deiner weiteren Anforderungen lassen sich vermutlich mit existierenden Bibliotheken realisieren, für externe FPC Bibliotheken muss gegebenefalls bei "uses" hinter "classes" "mclasses" angefügt werden, da MSEgui eine erweiterte "TComponent"-Version verwendet.
Dieses Programm wurde z.B. mit MSEgui gemacht:
http://almin-soft.ru/index.php?multimed ... creenshots

Dann gibt es noch fpGUI:
http://fpgui.sourceforge.net/
fpGUI bietet weniger Möglichkeiten als MSEgui und ist nicht so weit fortgeschritten, ist aber auch "custom drawn" und von der Struktur her näher an Delphi VCL (das Lazarus Vorbild) angelehnt.
MSEgui ist ein ganz neuer Ansatz zur Konstruktion eines GUI-Toolkits. Da du ja keine Delphi-Erfahrung hast, sollte das keine Rolle spielen.

Auch sehr interessant ist ultibo:
https://ultibo.org/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mschnell »

Timm Thaler hat geschrieben: 4. Aufbau einer eigenen GUI im - jetzt schlagt mich nicht - Stil von LCARS. Oder auch einer Steampunk-Oberfläche. Halt eine Oberfläche mit eigenem Design.
Im Lazarus-Projekt gibt es den Widget-Typ "CustumDrawn". Der kann als Ausgangspunkt für sowas dienen. (Funktioniert dabei vermutlich ähnlich wie MSE, ist bei Lazarus aber eher ein Stiefkind, während das bei MSE Mainstream ist.)

-Michael
Zuletzt geändert von mschnell am Mo 21. Mär 2016, 10:07, insgesamt 1-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mschnell »

mse hat geschrieben: auf schwächeren Rechnern wie Raspberry Pi
Es gibt ja die Hoffnung, dass die schlappen Vorgänger-Modelle (die ja eigentlich nur zu Ausbildungs-Zwecken designt wurden) mit RPi 3, der ein vollgültiger Rechner zu sein scheint und mit 64 Bit dann auch richtig erwachsen werden kann, Geschichte sind :D

(aarch64 Support für fpc und Lazarus siehe englische Mailing Listen)

-Michael
Zuletzt geändert von mschnell am Mo 21. Mär 2016, 11:08, insgesamt 2-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mschnell »

mse hat geschrieben:Du solltest vermutlich auch MSEide+MSEgui in Betracht ziehen, welches ebenfalls mit Free Pascal kompiliert wird.
Ist bei MSE ein (GUI-) Support für Android geplant, entweder mit native Programmen und Android-API Anbindung oder mit mit dem von FPC angebotenen Compilierung zu Java Byte Code ?

-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mse »

mschnell hat geschrieben: Ist bei MSE ein (GUI-) Support für Android geplant, entweder mit native Programmen und Android-API Anbindung oder mit mit dem von FPC angebotenen Compilierung zu Java Byte Code ?
Ja, allerdings nur bei genügendem Interesse.
Vermutlich einerseits durch ein OpenGL ES Backend mit einem Set von speziellen vereinfachten MSEgui-Komponenten für Touch-Interface und andererseits mit MSEifi Datenpunkt- und Event- Verbindungskomponenten zu einer mit den nativen Plattform-Tools erstellten GUI.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Timm Thaler »

Habt ihr einen Vergleich, was die Performance von mit Lazarus bzw. MSEide erstellten Programmen zu anderen Sprachen wie Java, Python und zu mit Qt in C++ gebauten GUIs betrifft?

Ich hab vor 20 Jahren auf dem Amiga500 mit AmigaBasic GUIs gezeichnet. Ja, buchstäblich alles selbst gemalt und Mousezeiger und Clicks abgefragt. DAS war wirklich langsam. Da ist der Raspi 100mal schneller, deswegen verwirren mich solche Aussagen zur Performance von GUI auf einem Raspi etwas. Aber ok, es gibt auch Quad-Core-Handys mit 1.3GHz, die in der Bedienung anscheinend lahm sind.

Noch ein paar Fragen:

13. Kann ich in Lazarus / FreePascal auch strukturiert programmieren, oder geht nur objektorientiert? Das würde die Transferierung von einigen einfachen bestehenden Programmen vereinfachen, die ich in Purebasic erstellt habe und gern in ähnlicher Form auf dem Raspi haben würde.

14. Ich war etwas erstaunt: Mein erstes Lazarus-"Programm" mit einer einfachen GUI aus dem Tutorial war kompiliert für Win gleich mal 16MByte groß. Liegt das daran, daß der Debugger noch eingebunden ist? Bekommt man das merklich kleiner? In Purebasic ist ein komplettes Terminal gerade mal 60kByte, eine umfangreiche Oberfläche mit Bildverwaltung, Dateiein- und ausgaben, XML-Parsing, Kommunikation über TCP-IP und so Kram gerade mal 1MByte. Nicht daß ich um jeden Preis sparen müßte, aber ich würde gern wissen, woran das liegt.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mschnell »

mse hat geschrieben:andererseits mit MSEifi Datenpunkt- und Event- Verbindungskomponenten zu einer mit den nativen Plattform-Tools erstellten GUI.
Witzig, dass uns die "ifi" - Idee immer wieder zusammenbringt :D :D :D
Ist ja eigentlich so offensichtlich sinnvoll, aber außer Deiner Implementierung (und meinen theoretischen überleg8ingen und begrenzten Fingerübungen) scheint sich niemand dafür zu interessieren.

-Michael

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von theo »

Timm Thaler hat geschrieben:Habt ihr einen Vergleich, was die Performance von mit Lazarus bzw. MSEide erstellten Programmen zu anderen Sprachen wie Java, Python und zu mit Qt in C++ gebauten GUIs betrifft?

Ich hab vor 20 Jahren auf dem Amiga500 mit AmigaBasic GUIs gezeichnet. Ja, buchstäblich alles selbst gemalt und Mousezeiger und Clicks abgefragt. DAS war wirklich langsam. Da ist der Raspi 100mal schneller, deswegen verwirren mich solche Aussagen zur Performance von GUI auf einem Raspi etwas. Aber ok, es gibt auch Quad-Core-Handys mit 1.3GHz, die in der Bedienung anscheinend lahm sind.

Noch ein paar Fragen:

13. Kann ich in Lazarus / FreePascal auch strukturiert programmieren, oder geht nur objektorientiert? Das würde die Transferierung von einigen einfachen bestehenden Programmen vereinfachen, die ich in Purebasic erstellt habe und gern in ähnlicher Form auf dem Raspi haben würde.

14. Ich war etwas erstaunt: Mein erstes Lazarus-"Programm" mit einer einfachen GUI aus dem Tutorial war kompiliert für Win gleich mal 16MByte groß. Liegt das daran, daß der Debugger noch eingebunden ist? Bekommt man das merklich kleiner? In Purebasic ist ein komplettes Terminal gerade mal 60kByte, eine umfangreiche Oberfläche mit Bildverwaltung, Dateiein- und ausgaben, XML-Parsing, Kommunikation über TCP-IP und so Kram gerade mal 1MByte. Nicht daß ich um jeden Preis sparen müßte, aber ich würde gern wissen, woran das liegt.

13. Ja
14. FAQ 1.1 http://wiki.freepascal.org/Lazarus_Faq/de http://wiki.freepascal.org/Size_Matters/de

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von mse »

Timm Thaler hat geschrieben:Habt ihr einen Vergleich, was die Performance von mit Lazarus bzw. MSEide erstellten Programmen zu anderen Sprachen wie Java, Python und zu mit Qt in C++ gebauten GUIs betrifft?
Nach meinen Erfahrungen sind MSEgui Programme eher schneller als vergleichbare Qt Programme. Lazarus verwendet Qt oder GTK2 als Backend, ist also vermutlich noch etwas langsamer. Free Pascal Binaries sind nicht so gut optimiert wie Clang oder gcc Programme, das sehe ich wenn ich den von MSElang mit LLVM Backend produzierten Code mit FPC vergleiche, siehe auch:
https://www.mail-archive.com/fpc-pascal ... 41615.html
Für normale Programme ist der Abstand von gcc und FPC nicht so gross, manchmal ist auch FPC schneller.
13. Kann ich in Lazarus / FreePascal auch strukturiert programmieren, oder geht nur objektorientiert? Das würde die Transferierung von einigen einfachen bestehenden Programmen vereinfachen, die ich in Purebasic erstellt habe und gern in ähnlicher Form auf dem Raspi haben würde.
Die Übertragung von Basic nach Pascal ist sicher gut möglich.
14. Ich war etwas erstaunt: Mein erstes Lazarus-"Programm" mit einer einfachen GUI aus dem Tutorial war kompiliert für Win gleich mal 16MByte groß. Liegt das daran, daß der Debugger noch eingebunden ist? Bekommt man das merklich kleiner? In Purebasic ist ein komplettes Terminal gerade mal 60kByte, eine umfangreiche Oberfläche mit Bildverwaltung, Dateiein- und ausgaben, XML-Parsing, Kommunikation über TCP-IP und so Kram gerade mal 1MByte. Nicht daß ich um jeden Preis sparen müßte, aber ich würde gern wissen, woran das liegt.
Das ist vermutlich Debug Information.
http://wiki.lazarus.freepascal.org/Size_Matters

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Lazarus auf Raspberry Pi - welche Möglichkeiten?

Beitrag von Dragon »

Wie sieht es eigentlich beim vanilla FPC mit LLVM und/oder ARMv8 Support aus

Antworten