Sockets auf dem Raspberry Pi

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Sockets auf dem Raspberry Pi

Beitrag von pluto »

Lt. Internet ist die letzte Synapse - Version die 40

Genau diese Version verwende ich. Es gibt hier ein Beispiel im Forum.
Aus diesem Beispiel habe ich eine Klasse erstellt. Damit ich leichter drauf zugreifen kann.
Funktioniert eigentlich recht gut.
Ein kleines Demo habe ich jedoch dazu nicht geschrieben. Aber vielleicht hilft es.
Ganz wichtig, es werden Threads genutzt, also musst du die Unit cthreads einbinden in der LPR Dateien. die muss als ERSTES eingebunden werden.

Für einen Server:

Code: Alles auswählen

 
  Server:=TPLTCP_Server.Create(true);
  Server.OnAddClient:=@OnAddClient;
  Server.OnReseived:=@OnReseived;
  Server.ClientList.OnReceived:=@OnReseived;
  ....
  if Paramcount >=2 then
    Server.StartServer(ParamStr(2),StrToInt(ParamStr(3)));
 
 

Wie du sehen kannst, ist der erste Parameter was anders.... Der Code stammt aus meinem Pluto Arduino Projekt. Der erste Parameter ist ein USB Device, kannst du hier einfach angeben oder anpassen.

Für einen Client:

Code: Alles auswählen

 
  ClientList:=TPLTCP_ClientList.Create;
  ClientList.OnReceived:=@OnReseived;
 
  // P1 = IP
  // P2 = Port1
  // P3 = Client Name
  NewClient:=ClientList.AddClient('','');
  NewClient.StartSocket(ParamStr(1),StrToInt(ParamStr(2)));
  NewClient.Send('NewClient:'+ParamStr(3));
 


In beiden Projekten werden die IP und Port per Parameter übergeben. Ist der Port belegt, wird der nächste genommen.
Dateianhänge
uplthreadtimertest.pas
(2.6 KiB) 156-mal heruntergeladen
uplTCP_Synapse.pas
(10.78 KiB) 151-mal heruntergeladen
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Sockets auf dem Raspberry Pi

Beitrag von Christian »

Mach doch bitte ein kleines Beispielprojekt wo man deinen Fehler nachvollziehn kann und häng es an dann diskutierts sich besser.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Sockets auf dem Raspberry Pi

Beitrag von pluto »

Nur so: Ich habe keinelei Probleme..... :D
MFG
Michael Springwald

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Sockets auf dem Raspberry Pi

Beitrag von aro »

Hallo,

erst mal die Antwort auf die letzten Fragen:

Grafikspeicher stand auf 32 das ist fast der kleinste Wert. Habe ihn aber auf 16 verringert. und werde es noch mal testen.
Lazarus ist Version 0.9.30.4-6 vom 18.6.2015
FPC ist Version 2.6.0
SVN-Revision : 35971
arm-linux-gtk 2

Über den debugger kann ich nichts sagen. Dazu finde ich keine Deteails. Ich gehe davon aus, das der Debugger mit Latarus installiert wird, und ggf. mit updatet wird.

Ich starte eigentlich öfter mal die Update-Funktion. Aber ich habe nicht mitbekommen, das Lazarus aktualisiert wurde.

Ich gehe nach wie vor davon aus, das Problem in Lazarus oder dem Debugger auf dem Rasperry Pi liegen. Ich bin Üüberzeugt, das die Standatzlösungen auf einem normalen PC mit 86er Prozessor sauber laufen. Den einzigen Lösungsansatz, den ich sehe, ist eine Komponente zu finden, die auf der speziellen Lazarusversion des Rasperry Pi wirklich geht.

Es soll von lNet eine non-visible Komponente geben. Die könnte eventuell gehen. Das Problem ist allerdings, das ich darüber noch nichts gefunden habe. Ich kenne weder den genauen Namen noch die Unit in der sich diese befindet.

Wenn es mir nicht gelingt das Problem mit Lazarus in den Griff zu bekommen, dann bleibt mit nur der Weg, über C. Das hat mir auch den Durchbruch gebracht, beim direkten Zugriff auf die GPIO-Pins.

Wenn also jemand Informationen über diese non-visible lNet Komponente hat, währe ich sehr dankbar.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Sockets auf dem Raspberry Pi

Beitrag von Christian »

Warum gehts du auf die Tipps eigentlich nicht ein ?
Synapse ignoriertst du obwohls von meheren leuten heir auf dem Pi getestet ist.
Ein Testprojekt willst du auch nicht liefern

gleichzeitig beschwerst du dich das du keine mundgerechte Lösung hinterhergeworfen bekommst

LNet hat scheinbar noch niemnd aufm Pi getestet (Plutos aussage ignorier ich de rhat da schon zu oft mist erzählt)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Sockets auf dem Raspberry Pi

Beitrag von aro »

Hallo,

erst mal die Antwort auf die letzten Fragen:

Grafikspeicher stand auf 32 das ist fast der kleinste Wert. Habe ihn aber auf 16 verringert. und werde es noch mal testen.
Lazarus ist Version 0.9.30.4-6 vom 18.6.2015
FPC ist Version 2.6.0
SVN-Revision : 35971
arm-linux-gtk 2

Über den Debugger kann ich nichts sagen. Dazu finde ich keine Deteails. Ich gehe aber davon aus, das der Debugger mit Latarus installiert wird, und ggf. mit updatet wird.

Ich starte eigentlich öfter mal die Update-Funktion. Aber ich habe nicht mitbekommen, das Lazarus aktualisiert wurde.

Ich gehe nach wie vor davon aus, das Problem in Lazarus oder dem Debugger auf dem Rasperry Pi liegen. Ich bin Üüberzeugt, das die Standatlösungen auf einem normalen PC mit 86er Prozessor sauber laufen. Den einzigen Lösungsansatz, den ich sehe, ist eine Komponente zu finden, die auf der speziellen Lazarusversion des Rasperry Pi wirklich geht.

Es soll von lNet eine non-visible Komponente geben. Die könnte eventuell gehen. Das Problem ist allerdings, das ich darüber noch nichts gefunden habe. Ich kenne weder den genauen Namen noch die Unit in der sich diese befindet.

Wenn es mir nicht gelingt das Problem mit Lazarus in den Griff zu bekommen, dann bleibt mit nur der Weg, über C. Das hat mir auch den Durchbruch gebracht, beim direkten Hardwarezugriff auf die GPIO-Pins. Wenns schnell gehen muß oder mehrere Pins gleichzeitig gesetzt oder abgefragt werden müssen, dann bleibt eben nur der direkte Zugriff auf die Prozessorregister.

Wenn also jemand Informationen über diese non-visible lNet Komponente hat, währe ich sehr dankbar.

MfG

Aro

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Sockets auf dem Raspberry Pi

Beitrag von aro »

Hallo,

erst mal die Antwort auf die letzten Fragen:

Grafikspeicher stand auf 32 das ist fast der kleinste Wert. Habe ihn aber auf 16 verringert. und werde es noch mal testen.
Lazarus ist Version 0.9.30.4-6 vom 18.6.2015
FPC ist Version 2.6.0
SVN-Revision : 35971
arm-linux-gtk 2

Über den debugger kann ich nichts sagen. Dazu finde ich keine Deteails. Ich gehe davon aus, das der Debugger mit Latarus installiert wird, und ggf. mit updatet wird.

Ich starte eigentlich öfter mal die Update-Funktion. Aber ich habe nicht mitbekommen, das Lazarus aktualisiert wurde.

Ich gehe nach wie vor davon aus, das Problem in Lazarus oder dem Debugger auf dem Rasperry Pi liegen. Ich bin Üüberzeugt, das die Standatzlösungen auf einem normalen PC mit 86er Prozessor sauber laufen. Den einzigen Lösungsansatz, den ich sehe, ist eine Komponente zu finden, die auf der speziellen Lazarusversion des Rasperry Pi wirklich geht.

Es soll von lNet eine non-visible Komponente geben. Die könnte eventuell gehen. Das Problem ist allerdings, das ich darüber noch nichts gefunden habe. Ich kenne weder den genauen Namen noch die Unit in der sich diese befindet.

Wenn es mir nicht gelingt das Problem mit Lazarus in den Griff zu bekommen, dann bleibt mit nur der Weg, über C. Das hat mir auch den Durchbruch gebracht, beim direkten Zugriff auf die GPIO-Pins.

Wenn also jemand Informationen über diese non-visible lNet Komponente hat, währe ich sehr dankbar.

MfG

Aro

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Sockets auf dem Raspberry Pi

Beitrag von pluto »

LNet hat scheinbar noch niemnd aufm Pi getestet (Plutos aussage ignorier ich de rhat da schon zu oft mist erzählt)

Ach so, ist das.... Rate mal warum ich mich in letzter Zeit so zurück halte. Es gibt aber dinge, wo ich mir 100% sicher bin.
Außerdem finde ich es schon eine Beleidigung sowas öffentlich zu äußern. Das hätte man auch andere schreiben können.
Etwas mehr "Feingefühl" bitte.

Aber in diesen Fall täuscht du dich. LNET Läuft Problemlos. Ich habe seit Monaten/Jahren ein Projekt damit am Laufen. Erst am Raspberry PI mit LNet und jetzt auf dem Banana PI. Wenn man es genau nimmt, sind es sogar zwei Projekte, die auf den PI laufen und eins sogar auf einen anderen PC.

Bei LNET gibt es schöne Beispiele, an den man sich Orientieren kann.
MFG
Michael Springwald

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Sockets auf dem Raspberry Pi

Beitrag von Warf »

Über den debugger kann ich nichts sagen. Dazu finde ich keine Deteails. Ich gehe davon aus, das der Debugger mit Latarus installiert wird, und ggf. mit updatet wird.

Der Debugger wird entweder vom FPC mitgeliefert ($FPCDir/bin/gdb), oder du musst ihn selbst installieren, führe einfach mal ein apt-get install gdb aus, aktualisiere den gdb Pfad in Lazarus und versuche es erneut. Die aktuelle version kannst du auch prüfen in dem du ihn einfach mal via Shell/Bash ausführst

PS: bei einigen meiner Projekte hat der GDB direkt am Anfang der Ausführung gecrashed weil er irgendwie mit den Überprüfungseinstellungen (I/O Prüfung, Range Checks, etc) nicht klar kam, ich musste alle Überprüfungen ausschalten damit ich meine Anwendung Debuggen konnte

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Sockets auf dem Raspberry Pi

Beitrag von aro »

Hallo,

ich habe keinen Hinweis ignoriert. Ich habe Jeden Vorschlag sorgfältig aber leider ohne Erfolg abgearbeitet. Und lNet läuftja auch zuverlässig - aber eben nicht auf dem Pi selbst in der Entwicklungsumgebung.

Auch den letzten Tip

Server:=TPLTCP_Server.Create(true);
Server.OnAddClient:=@OnAddClient;
Server.OnReseived:=@OnReseived;
Server.ClientList.OnReceived:=@OnReseived;
....
if Paramcount >=2 then
Server.StartServer(ParamStr(2),StrToInt(ParamStr(3)));

habe ich umgesetzt.

Als erstes die Unit cthreads in die Projektdatei
Dann alle Quelldateien von synapse in das Verzeichnis kopiert.

festgestellt, das ich bei StartServer meine eigene IP-Adresse eingeben muß was auch nirgens gestanden hat.

Von einem Windowsrechner den Client gestartet. Das Ereignis OnAddClient kommt an aber bei jedem 2. oder 3. Programmstart kommt: Access violation. Press OK to ignore and......

Wenn ich dann Daten sende tritt das Ereignis Server.ClientList.OnReceived ein aber ohne gültige Daten. Selbstverständlich kann ich das ganze Projekt zwecks besserer Darstellung verschicken, aber da brauch ich eine richtige mailadresse.

MfG

Aro

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Sockets auf dem Raspberry Pi

Beitrag von pluto »

ich habe keinen Hinweis ignoriert. Ich habe Jeden Vorschlag sorgfältig aber leider ohne Erfolg abgearbeitet. Und lNet läuftja auch zuverlässig - aber eben nicht auf dem Pi selbst in der Entwicklungsumgebung.

Bei mir läuft es Problemlos erst auf den Raspberry PI und jetzt auf dem Banana PI.
Allerdings nutzte ich auch den Debugger nicht. Vielleicht liegt es ja wirklich daran.

Für ein anders Projekt nutzte ich Synapse. Sehr erfolgreich.

festgestellt, das ich bei StartServer meine eigene IP-Adresse eingeben muß was auch nirgens gestanden hat.

Sorry, ich dachte das wäre klar.

Von einem Windowsrechner den Client gestartet. Das Ereignis OnAddClient kommt an aber bei jedem 2. oder 3. Programmstart kommt: Access violation. Press OK to ignore and......

Dann ist irgendwas noch nicht Installisiert.

Ich werde nachher mal eine kleine Test Anwendung zusammen stellen.

Wenn ich dann Daten sende tritt das Ereignis Server.ClientList.OnReceived ein aber ohne gültige Daten. Selbstverständlich kann ich das ganze Projekt zwecks besserer Darstellung verschicken, aber da brauch ich eine richtige mailadresse.

Du kannst es hier im Forum als ZIP Archiv hochladen. Bis 5 MB. Alle *.ppu und *.o Dateien raus nehmen und die Ausführbare Datei ebenfalls.

Du arbeitest direkt mit Lazarus auf den Rapsberry PI?
Das ist mir ehrlich gesagt zu Langsam. Ich nutzte einfach nur fpc direkt.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Sockets auf dem Raspberry Pi

Beitrag von pluto »

So, ich habe noch ein Test Projekt von mir gefunden.

Der Aufruf geht so:
Als Server
./tcp_console server deine_ip 8080

Als Client
./tcp_console client deine_ip 8080

Ich arbeite meistens mit sehr hohen Ports.

Nun müsstest du was eingeben können und absenden können.
Dateianhänge
tcp_console.zip
(4.14 KiB) 162-mal heruntergeladen
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Sockets auf dem Raspberry Pi

Beitrag von Christian »

Na super, dann les ich das jetzt so das alles läuft ?
Die Access Violation kommt mit ziemlicher Warscheinlichkeit aus deinem Code.
Gegenchecken kannst du das ja mit den LNet beispielen. Da ist sicherlich auch StartServer richtig verwendet
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Sockets auf dem Raspberry Pi

Beitrag von corpsman »

Servus,

Ich setze Lnet auch erfolgreich auf dem Pi ein, allerdings nur die Console Mode Varianten. Die LnetVisual habe ich auch nicht zum laufen bekommen, liegt bei mir zumindest an der Abhängigkeit zur ssl library. Im Konsole Mode kann man das aus den Uses raus nehmen ohne dass es Probleme gibt.
--
Just try it

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Sockets auf dem Raspberry Pi

Beitrag von aro »

Hallo,

jetzt kommen wir dem Problem schon wesntlich näer. Das Lazarus auf dem Raspberry doch sehr zäh läuft begeistert mich auch nicht gerade. Aber bei meiner Aufgabenstellung muß das sein. Mein Programm wird ausschließlich über die GPIO-Pins gesteuert und der Arbeitsmodus über Netzwerk eingestellt und auch die Ergebnisse über Netzwerk versendet. Eine Tastatur wird es nicht geben. Auch eine reine Konsolenanwendung ist nicht möglich, da der Bildschirm zur Bedienung eine vernünftige Grafikanzeige benötigt. Also bitte keine Komentare mehr von Leuten, die die vorgeschlagenen Lösungswege nicht selbst unter Lazarus auf dem Raspberry Pi selbst ausführen können.

Es gibt nur 3 Wege
1. lNet als Konsonenversion so in mein Programm integrieren, das es klappt.
2. Fehler bei verwendung von Synapse aufspüren.
3. eigene Komponente ggf unten verwendung von C

Jetzt werde ich weiter probieren. - wünscht mir Glück.

MfG
Aro

Antworten