Raspberry Demo Program geht noch nicht

Für Fragen von Einsteigern und Programmieranfängern...
Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Hallo

Will das Lazarus auf einem Raspberry ausprobieren.
Hatte nur eine Fehlermeldung beim installieren.
'Errror in Editor Marco script' ........ failed getstr2 exp '456' / got abc.
War eine etwas längere Meldung.
Muss die installation auf einer anderen SD Karte probieren.
Mal sehen ob die Meldung immer kommt.

Aber OK, ich habe dann dieses Programm versucht :
http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi
Soll nur den GPIO0 ein/ausschalten.

Das wird mir soweit ohne Probleme compiliert. Aber es passiert nichts.
Die angeschlossene LED ist OK.

Hatte ein neues Projekt erstellt, ein tmemo (logmemo) und die toggle box auf der Form gemacht.

Nur mit den beiden Prozeduren :

Code: Alles auswählen

    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);

habe ich nichts gemacht (die sagen mich nichts), was vieleicht das Problem ist.

Gibt es etwas im Objektinspektor das zu tun wäre?

sudo adduser pi gpio
sudo adduser pi i2c
sudo adduser pi spi
Habe ich auch gemacht war aber nicht nötig.
Good code comes from experience, experience comes from bad code.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Habe übersehen das es scheinbar noch ein Hauptprogramm braucht.
Also habe ich ein Program im selben Ordner gemacht.

Code: Alles auswählen

program io_test;
 
{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, Unit1
  { you can add units after this };
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Jetzt hagelt es Fehlermeldungen, das Interfaces und Forms nicht gefunden werden.
Wozu braucht es denn dieses Hauptprogramm? Das Form1 würde ja fast funktionieren?
Geht das nicht etwas einfacher?
Good code comes from experience, experience comes from bad code.

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: Raspberry Demo Program geht noch nicht

Beitrag von Thandor »

für die GPIO muss dein Programm mit sudo-Rechte laufen.

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: Raspberry Demo Program geht noch nicht

Beitrag von Timm Thaler »

Thandor hat geschrieben:für die GPIO muss dein Programm mit sudo-Rechte laufen.


Nein, muss es auf neuen Verionen nicht mehr.

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: Raspberry Demo Program geht noch nicht

Beitrag von Timm Thaler »

Also mal der Reihe nach:

1. Hast Du Lazarus und FPC erfolgreich auf dem Raspberry installieren können? Welche Versionen?

2. Kompilierst Du io_test auf dem Raspberry - setzt 1. voraus - oder unter Windows? Letzteres funktioniert so ohne Weiteres nicht.

3. Hast Du io_test und unit1 abgespeichert und im gleichen Verzeichnis stehen? Hast Du ein Projekt angelegt?

Ja, das sieht am Anfang etwas umständlich aus. Ich hab auch etwas gebraucht mich da reinzufitzen. Aber glaub mir, es ist bei weitem nicht so umständlich wie C und in ein paar Tagen denkst Du nichtmehr drüber nach.

4. Das Programm wird nicht funktionieren. Ja, da ist leider ein kleiner Fauxpas drin: In FormActivate wird der GPIO erstmal aktiviert. Dann wird er als Ausgang gesetzt. Das Aktivieren dauert aber einige Millisekunden, und in der Zeit hat er den Versuch, ihn als Ausgang zu setzen schon erfolglos abgebrochen. Beim zweiten Start funktioniert es dann zwar, aber nur weil der GPIO bereits aktiviert ist.

Aber das beheben wir, wenn Du 1. bis 3. geklärt hast und erfolgreich kompilieren kannst.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Danke für die Antworten.

Habe die sd karte neu aufgesetzt. Noobs -> raspian
Dann update und upgrade.
Das Lazarus ist frisch installiert.
Hatte dann aber eben diese Fehlermeldung.

Lazarus startet jetzt aber selbst ohne Fehlermeldung.

Ist Version V124+dsfg2-1

Habe versucht ein Programm das ich auf winxp geschrieben habe auf dem Raspi selbst zu compilieren.
Das ging nicht.

Dann habe ich eben dieses Beispiel gefunden mit dem GPIO port.
Habe zuerst ein neues Projekt gestartet womit ich dann 'form1 hatte'.

Das ich noch ein Hauptprogramm brauche hab ich erst nachher realisiert.
Da habe ich ein neues Programm (also nicht neues Projekt) gemacht und im selben Ordner gespeichert.

Habe gerade einen neuen Raspberry geliefert bekommen und versuche alles nochmal von vorne.
Good code comes from experience, experience comes from bad code.

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

Re: Raspberry Demo Program geht noch nicht

Beitrag von Mathias »

Hast du auch mal versucht, ein neues einfaches Programm auf dem Raspi zu kompilieren ?
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: Raspberry Demo Program geht noch nicht

Beitrag von Timm Thaler »

Die Lazarus Version in den Repos von Raspbian ist leider hoffnungslos veraltet.

Aktuell ist Lazarus 1.6.4 und FPC 3.0.4.

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

Re: Raspberry Demo Program geht noch nicht

Beitrag von Mathias »

Timm Thaler hat geschrieben:Die Lazarus Version in den Repos von Raspbian ist leider hoffnungslos veraltet.

Aktuell ist Lazarus 1.6.4 und FPC 3.0.4.

Aus diesem Grund habe ich mal dieses geschrieben: viewtopic.php?f=5&t=10825
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: Raspberry Demo Program geht noch nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:Aus diesem Grund habe ich mal dieses geschrieben: viewtopic.php?f=5&t=10825


Ja, das funktioniert sehr gut. Aber für einen Einsteiger ist es schon schweres Brot, durch die verschiedenen Möglichkeiten durchzusteigen.

Marc hat geschrieben:Habe gerade einen neuen Raspberry geliefert bekommen und versuche alles nochmal von vorne.


Es ist sehr unwahrscheinlich, dass es an einem kaputten GPIO liegt.

Gehe schrittweise vor. Versuche erst ein einfaches Hello World zu kompilieren. Dann baue in das Hello World Buttons ein. Dann baue das Ansprechen der GPIOs ein.

Die GPIOs testen kannst Du auch völlig ohne Lazarus mit Konsolenbefehlen: http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_GPIO_Shell.html, http://raspberrypiguide.de/howtos/raspberry-pi-gpio-how-to/ (Das mit den Root-Rechten stimmt inzwischen nicht mehr. Ist für Jessie und Pi 3 nicht nötig.)

Dein Lazarus-Programm macht am Ende nichts anderes. Es spricht die GPIOs als Dateien mit Read und Write an und schreibt da Zeichenfolgen rein, die die GPIOs steuern.

Vorsicht: Verschiedene Tutorials verwenden verschiedene Nummerierungen der GPIOs. Stelle sicher, dass Du die richtige Nummer verwendest.

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

Re: Raspberry Demo Program geht noch nicht

Beitrag von Mathias »

Ja, das funktioniert sehr gut. Aber für einen Einsteiger ist es schon schweres Brot, durch die verschiedenen Möglichkeiten durchzusteigen.


Vielleicht könnte man mal versuchen bei folgendem Script die Pfade anpassen und auf einem laufen Raspi die DEB.Dateien erzeugen und anschliessend diese zu Verfügung stellen.

Code: Alles auswählen

#!/bin/bash
cd lazarus/tools/install
 
./create_fpc_deb.sh fpc ../../../fpc/
./create_fpc_deb.sh fpc-src ../../../fpc/
 
./create_lazarus_deb.sh append-revision
 

Ich habe das vorhin probiert, aber irgendwie kommt das Script nicht mit ARM zu recht. :roll:
Zuletzt geändert von Mathias am Sa 19. Aug 2017, 21:43, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Danke für die vielen Antworten.

Also neues Raspberry 3. Neue SD Karte _> neues Glück.
Alles wie gehabt. Software aus den Repositories.

Sollte ja immer das neueste sein. Oder alt aber läuft? Was ist das Ziel der Repositories?

Wie auch immer. Es hat sich installiert, hat jedenfalls nichts geblinkt oder gebimmelt.

Dann kriege ich das hier, das ist genau dasselbe das ich schon mit dem anderen Raspberry hatte.
Kann nicht beurteilen ob das jetzt schlimm ist?
Aber wie es scheint kann man Lazarus auf nem Raspberry nicht 'normal' installieren?
Sehr schade, gestolpert auf dem letzten Meter. Ich kann doch nicht der erste sein der das versucht?
Dateianhänge
Error Message.jpg
Good code comes from experience, experience comes from bad code.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Kleines Update.

Ja einfache Programme im Stil 'Hello World' funktionieren.
Geht sogar wie geölt mit so einem Raspi 3. Klasse Teil.

Der Link zu Netzmafia ist auch gut. Das funktioniert. Gpio0 pin17

Also alles Paletti. Das Lazarus ist installiert auch wenn mit Fehlermeldung.

Problem wird sein wie mache ich einen Code so das ich ein Hauptprogramm habe und eine separate Form1?
Normal mache ich ja eine neues Projekt und habe dann eine Form1, die dann so für sich alleine läuft.
Wozu dann dieses Hauptprogramm?

Ich habe mir mittlerweile drei Lazarusbücher gekauft.
Leider haben sich Bücher in den letzten 2000 Jahren aber kaum weiter entwickelt.
Auch die allermodernsten Exemplare muss mann noch selber lesen. :-(
Good code comes from experience, experience comes from bad code.

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: Raspberry Demo Program geht noch nicht

Beitrag von Timm Thaler »

Marc hat geschrieben:Problem wird sein wie mache ich einen Code so das ich ein Hauptprogramm habe und eine separate Form1?


Die Idee dahinter ist, dass Du nicht alles ins Hauptprogramm packst, sondern für verschiedene Teilaufgaben Deines Programms verschiedene Units = Module schreibst, die dann ins Hauptprogramm eingebunden werden. Das sieht am Anfang umständlich aus, wird sich aber ganz schnell als sehr praktisch erweisen.

Du machst jetzt Folgendes:
1. Lazarus öffnen.
2. Menu Projekt => Neues Projekt
3. Im Fenster Erzeuge neues Projekt => Anwendung auswählen, Ok
4. Du bekommst eine Vorlage "Unit1" und ein Fenster "Form1", dazu einen "Objektinspektor"
- In Form1 kannst Du jetzt Buttons usw. anlegen, deren Eigenschaften im Objektinstpektor verändern, mach das später.
- Das Hauptprogramm existiert ebenfalls bereits, aber Du siehst es nicht, machen wir später.
5. Speichere das Projekt mit Menu Projekt => Projekt Speichern
- Such Dir ein Verzeichnis
- Nimm als Dateiname "testprogramm.lpi", Speichern
- Es erscheint erneut ein Speichern-Dialog für die "unit1", Speichere sie im gleichen Verzeichnis als "test_gui.pas" ab.
- Du wirst sehen, dass Deine Unit (erste Programmzeile) jetzt "test_gui" heisst.
6. Gehe in das Verzeichnis. Du findest dort mehrere Dateien.
testprogramm.lpi = die Lazarus-Projektdatei, beinhaltet Infos zu Deinem Projekt
testprogramm.lpr = das Hauptprogramm => das kannst Du jetzt auch im Lazarus-Editor öffnen
test_gui.pas = die Unit für die GUI, hier kommen alle Prozeduren zur Behandlung der GUI rein
test_gui.lfm = diese Datei beinhaltet die Infos zu Form1, sprich den angelegten Buttons... und deren Eigenschaften
.. und noch bißchen Kleinkram, den wir nicht anfassen

Wichtig ist, dass Du das Projekt immer mit testprogramm.lpi öffnest, das Hauptprogramm testprogramm.lpr musst Du anfangs eigentlich nicht anfassen. Und Du solltest von Anfang an strukturieren, dass heisst, für die Befehle um die GPIOs anzusprechen machst Du eine neue Unit und packst diese Befehle da rein.

Probier erstmal das Obige aus.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry Demo Program geht noch nicht

Beitrag von Marc »

Danke für die Antwort. Ich probiere das morgen mal.

Unterdessen, hab ich mir überlegt das (Haupt) Programm sollte alleine ja auch compilierbar sein. :
program io_test;

Code: Alles auswählen

{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms
  { you can add units after this };
 
{$R *.res}
 
begin
 
end.


Sieht bei mir jetzt so aus. Unit1 existiert noch nicht, also weg damit. Aber der Compiler reklamiert das er Interfaces und Forms nicht findet.
Hat die von mir verwendete Version das noch nicht oder muss ich das separat installieren?

Wie würde ich denn zu einer aktuelleren Version kommen?
Good code comes from experience, experience comes from bad code.

Antworten