Unit Serial und ESP8266

Antworten
wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Unit Serial und ESP8266

Beitrag von wennerer »

Hallo,
ich habe mit der Arduino IDE ein kleines Programm auf einen ESP8266 geschrieben das ca. alle 5 Sekunden den Text "Mein erstes Writeln" sendet.
Mit CuteCom sieht das dann so aus:
CuteCom1.png
CuteCom1.png (11.23 KiB) 606 mal betrachtet
Ich versuche nun schon länger in Lazarus ein kleines Programm zu schreiben mit dem ich diesen Text empfangen kann. Am liebsten würde ich es mit der Unit Serial machen weil ich dann nichts weiter installieren muss. Ich habe schon einiges gelesen und probiert aber leider habe ich immer noch keine Ahnung was ich da eigentlich alles tun muss.

Mein Code schaut schaut bisher so aus (habe da natürlich schon vieles probiert was ich mich gar nicht zu zeigen traue :D ):

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  serial;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button_Close: TButton;
    Button_Read: TButton;
    Button_Open: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    StaticText1: TStaticText;
    procedure Button_CloseClick(Sender: TObject);
    procedure Button_OpenClick(Sender: TObject);
    procedure Button_ReadClick(Sender: TObject);
  private
    SerHandle: TSerialHandle;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button_OpenClick(Sender: TObject);
begin
 SerHandle := SerOpen('/dev/ttyUSB0');
 if SerHandle = 0 then
  begin
   showmessage('Handle error (port not available, etc.)');
  end
 else
  begin
   serial.SerSetParams(SerHandle,74880,8,NoneParity,1,[]);
   showmessage('Port opened successfully ');
  end;
end;

procedure TForm1.Button_CloseClick(Sender: TObject);
begin
 SerClose(SerHandle);
end;

procedure TForm1.Button_ReadClick(Sender: TObject);
var Res   : LongInt;
    value : byte;
begin
 Res:= SerRead(SerHandle,value,1);

 Label1.Caption := inttostr(Res);

 if Res > 0 then Memo1.Lines.Add(inttostr(value));
end;



end.  
Das Ergebnis sieht dann so aus:
Form.png
Form.png (3.84 KiB) 606 mal betrachtet
Für Erklärungen, Tipps, Code und Links wäre ich sehr dankbar!

Viele Grüße
Bernd

PS: Scheinbar kann ich grade keine Bilder hochladen?

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

Re: Unit Serial und ESP8266

Beitrag von theo »

Ich denke üblicherweise nimmt man dafür Synapse Synaser.

https://wiki.freepascal.org/Hardware_Access#Synaser

wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Unit Serial und ESP8266

Beitrag von wennerer »

Als Bitmap funktioniert es, also hier die Bilder:
CuteCom.bmp
CuteCom.bmp (1.45 MiB) 596 mal betrachtet


Form.bmp
Form.bmp (550.83 KiB) 596 mal betrachtet

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

Re: Unit Serial und ESP8266

Beitrag von Mathias »

Ist das nur bei mir so, das ich im ersten Post die Bilder nicht sehe ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Unit Serial und ESP8266

Beitrag von wennerer »

Hallo Matthias,
ich dachte gestern das liegt am Format deshalb hab ich es dann im zweiten Beitrag mit Bmp probiert und es ging. Aber du hast recht es liegt am ersten Post. Hab es grade getestet.

Viele Grüße
Bernd

wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Unit Serial und ESP8266

Beitrag von wennerer »

Hallo,
erstmal Danke an Theo für den Tipp mit Synaser. Damit kann ich schon mal was empfangen.

Falls sich jemand dafür interessiert bzw. was verbessern kann hier mein Versuch:

Code: Alles auswählen

program SynaserTest;

{$mode objfpc}{$H+}

uses
  Classes,SysUtils,Synaser,Crt;

 procedure ReadMyESP8266;
  var
    ser: TBlockSerial;
    Value: string;
  begin
    ser:=TBlockSerial.Create;
    try
      ser.Connect('/dev/ttyUSB0');
      Sleep(1000);
      ser.config(74880,8, 'N', SB1, False, False);
      Write('Device: ' + ser.Device + '   Status: ' + ser.LastErrorDesc +' '+
      Inttostr(ser.LastError));
      Sleep(1000);
      repeat
        Value := ser.RecvString(1000);
        if Value <> '' then
         writeln(Value);
      until keypressed;
    finally
      Writeln('Serial Port will be freed...');
      ser.free;
      Writeln('Serial Port was freed successfully!');
    end;
  end;

  begin
   ReadMyESP8266;
  end.
Sieht im Terminal dann so aus:
Terminal.bmp
Terminal.bmp (873.69 KiB) 306 mal betrachtet
PS: Seltsam konnte eben keine PNG anhängen aber Bmp geht?

Viele Grüße
Bernd

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

Re: Unit Serial und ESP8266

Beitrag von theo »

wennerer hat geschrieben: So 13. Jul 2025, 09:42 PS: Seltsam konnte eben keine PNG anhängen aber Bmp geht?
Stimmt ja nicht. Du konntest es schon anhängen.
Es hat auch eine Dateigrösse, man kann dein Bild auch downloaden.
Es hat einen PNG Header.
Da ist einfach nichts drauf, auf deinem PNG.
Das Forum funktioniert schon (Dein BMP in ein PNG umgewandelt):
Dateianhänge
Form.png
Form.png (16.62 KiB) 296 mal betrachtet

wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Unit Serial und ESP8266

Beitrag von wennerer »

Das ist echt seltsam. Ich habe eben noch mal alle PNG's von gestern und heute (und auch Andere) getestet und die wurden alle in der Vorschau angezeigt. Also so wie es sein soll. Vorhin war da nur ein graues Rechteck (habe bestimmt nichts anders gemacht) und im ersten Beitrag sieht man ja das da nur graue Rechtecke sind. Keine Ahnung woher das kommt.

Viele Grüße
Bernd

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

Re: Unit Serial und ESP8266

Beitrag von theo »

wennerer hat geschrieben: So 13. Jul 2025, 10:06 Das ist echt seltsam. Ich habe eben noch mal alle PNG's von gestern und heute (und auch Andere) getestet und die wurden alle in der Vorschau angezeigt. Also so wie es sein soll. Vorhin war da nur ein graues Rechteck (habe bestimmt nichts anders gemacht) und im ersten Beitrag sieht man ja das da nur graue Rechtecke sind. Keine Ahnung woher das kommt.
Wenn du es mit den PNG nicht hinbekommst, mach lieber JPEG.
Die BMP sind kaum komprimiert -> Unnötig grosse Dateien.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6869
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Unit Serial und ESP8266

Beitrag von af0815 »

Ein Hinweis nicht jeder UART kann mit 74880 Baud umgehen. Also nicht verzweifeln fall es auf einen Rechner/Chipset mal nicht funktioniert. Meine Erfahrung mit dem ESP8266.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Acia6850
Beiträge: 41
Registriert: Mo 9. Okt 2023, 18:45
OS, Lazarus, FPC: Windows + WSL / Linux Debian Rasbian OS (L 3.0.0 FPC 3.3.2)
CPU-Target: 64Bit
Wohnort: LK Ludwigsburg

Re: Unit Serial und ESP8266

Beitrag von Acia6850 »

Hallo,

der Esp8266 hat ein WLAN Modul.

Warum der Datenaustausch über den UART ?

Er hat einen AP und STA Mode.

Es ist relativ einfach Daten zwischen einem Rechner und dem ESP8266 über das Netzwerk auszutauschen.

Mit Lazarus z.Bsp das Synapse Paket oder ESP8266 als WebServer mit fphttpclient.

Es gib einige Beispiele in der Arduino IDE.

Gruß
ACIA6850

wennerer
Beiträge: 615
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Unit Serial und ESP8266

Beitrag von wennerer »

Hallo,
danke für eure Antworten.
Mit der Arduino IDE hab ich mittlerweile einen ESP8266 laufen der mir Energiedaten mitschreibt und auf den ein Webserver läuft. Da kann ich mit dem Browser (im Heimnetz) zugreifen. Auslesen der Daten mach ich mit einen kleinen Lazarus Programm.

Aber mich hat halt die Neugier gepackt. Ich hab jetzt eine Lazarus Trunk laufen mit der ich prinzipell den ESP beschreiben kann. Die Blinker Beispiele von ccrause laufen. Eine Verbindung mit der Seriellen Schnittstelle wäre mir während des Programmierens schon wichtig von daher teste ich noch etwas herum. Aber wie af0815 schon schreibt kämpf ich noch mit der Baudrate (und noch etlichen mehr). Ich weiß noch nicht wie ich in einem Lazarus Programm die Baudrate des ESP einstelle. Und mein Versuch mit Synaser ist natürlich auch noch nicht das Gelbe vom Ei.
Aber was soll's, ich mach es ja nur zum Spass. Mal sehen wie weit ich da noch komm.
Falls jemand Code hat der auf dem ESP läuft würde mich das natürlich sehr interessieren.

Viele Grüße
Bernd

Antworten