Uit Hack42
Ga naar: navigatie, zoeken
k (Naam toegevoegd via button)
Regel 9: Regel 9:
 
}}
 
}}
 
== Wat ==
 
== Wat ==
Je hebt een leuk projectje gemaakt met een Arduino, maar nu wil je de gegevens presenteren in een grafisch scherm op een PC of laptop. Hoe maak je zoiets? Of whatever ander programma met een smoelwerk.
+
Je hebt een leuk projectje gemaakt met een Arduino of zo, maar nu wil je de gegevens presenteren of je project bedienen in een grafisch scherm op een PC of laptop. Hoe maak je zoiets? Of whatever ander programma met een smoelwerk.
  
1 van de vele mogelijkheden is om zelf een GUI (Graphical User Interface) te maken. Ook daar zijn veel platforms voor te vinden, maar na lang zoeken heb ik voor [https://www.freepascal.org/ FreePascal] ([https://en.wikipedia.org/wiki/Free_Pascal Wikipedia]) + [https://www.lazarus-ide.org/ Lazarus] ([https://en.wikipedia.org/wiki/Lazarus_(IDE) Wikipedia]) gekozen, omdat dat een goed geïntegreerde omgeving is die zo goed als geen configuratie behoeft, gratis is en beschikbaar is voor Windows, Linux, Mac, Raspberry-Pi en zelfs Android.
+
1 van de niet zo vele mogelijkheden om zelf een GUI (Graphical User Interface) te maken is Free Pascal met de Lazarus IDE https://www.freepascal.org/<br>
De slogan is "Write once, compile everywhere". Dat is niet 100% waar, maar het komt er dicht bij.
+
Deze is goed geïntegreerd (WYSIWYG), gratis, open source, levend, behoeft zo goed als geen configuratie en is beschikbaar voor Windows, Linux, Mac, Raspberry-Pi, Android en nog wel meer...<br>.
 +
De slogan is "Write once, compile everywhere", en dat komt dicht bij de waarheid.
  
Free Pascal is een taal die qua nivo vergelijkbaar is met C++, het kent dezelfde structuren maar het heet allemaal net even anders, helaas.
+
Free Pascal is qua nivo vergelijkbaar met C++, het kent dezelfde structuren maar het heet allemaal net even anders, helaas.<br>
De Lazarus IDE laat je met de muis allerlei controls naar je forms slepen (wysiwyg) en eenvoudig de properties en event-handlers instellen.
+
De Lazarus IDE laat je met de muis allerlei controls naar je forms slepen (wysiwyg) en eenvoudig de properties en event-handlers instellen.<br>
 
Mensen die eerder met MS Visual Basic of VisualC++ gewerkt hebben zullen veel herkennen.
 
Mensen die eerder met MS Visual Basic of VisualC++ gewerkt hebben zullen veel herkennen.
  
Voorbeelden van door mij met Lazarus-FPC gemaakte GUI's zijn het [[Control_Panel_CNC_Machine|bedieningsprogramma]] van [[Gebruiker:JanBee/FlatBed_Machine|mijn CNC]] in het [[Makerlab]] (PC-WXP-platform), de readout van de Boor-Freesmachine in de [[Metaalwerkplaats]] (Raspberry-Pi) en een interface voor de bediening en logging van een Foucault slinger, W7 (zie plaatje).
+
Voorbeelden van door mij met Lazarus-FPC gemaakte GUI's zijn:
 +
Het bedieningspaneel van mijn freesbank: http://86.85.156.78/FreesControl.jpg
 +
Het dashboard van mijn foucaultslinger: http://86.85.156.78/Foucault.jpg
  
 
Deze introductie is bestemd voor mensen die al een redelijke programmeer ervaring hebben met bijv. C++ als bij de Arduino familie. Het is beslist géén beginnerscursus programmeren, wel voor beginners op GUI gebied.
 
Deze introductie is bestemd voor mensen die al een redelijke programmeer ervaring hebben met bijv. C++ als bij de Arduino familie. Het is beslist géén beginnerscursus programmeren, wel voor beginners op GUI gebied.
Regel 25: Regel 28:
 
Ik denk de introductie in 3 delen te doen:  
 
Ik denk de introductie in 3 delen te doen:  
  
1: Waarom FPC en Lazarus, de belangrijkste verschillen tussen Pascal en C, struktuur van een Pascal programma, enkele veel voorkomende controls (dat zijn oa die dingen waar je met een muis op kunt klikken), en de concepten van properties en events / event handlers. En natuurlijk starten we met een "Hello World" exercitie.
+
1: Waarom FPC en Lazarus, hoe gemakkelijk je controls (dat zijn oa die dingen waar je met een muis op kunt klikken) op een formulier kunt zetten, en de concepten van properties en events / event handlers.<br> En natuurlijk starten we met een "Hello World" exercitie.
  
2: Communicatie met bijv. een Arduino, zowel seriëel als via een netwerk. Het installeren van pakketten.
+
2: De basics van Pascal.
  
3: Meerdere forms. Units in Pascal vs. Headerfiles in C/C++.  
+
3: Communicatie met bijv. een Arduino, zowel seriëel als via een netwerk.
  
 
== Voorbereiding ==
 
== Voorbereiding ==
Installeer Lazarus / fpc op je laptop:
+
Het worden niet echt "Hands On" sessies, maar als je wat wilt experimenteren: Installeer Lazarus / fpc op je laptop:
 
* Windows: Google op "Lazarus fpc", download en installeer. Het doet er nier erg toe welke versie.
 
* Windows: Google op "Lazarus fpc", download en installeer. Het doet er nier erg toe welke versie.
* Linux: Met sudo apt-get install lazarus fpc krijg je een wat oudere versie maar die werkt prima. Voor de laatste versie moet je zoeken naar een debian pakket.
+
* Linux (Mint, Ubuntu e.d.): Met sudo apt-get install lazarus fpc krijg je een wat oudere versie maar die werkt prima. Voor de laatste versie moet je zoeken naar een debian pakket. Soms zijn er 3 pakketten nodig: lazarus, fpc, sources.
 
* Mac: Weet ik niet. Zoeken en installeren.
 
* Mac: Weet ik niet. Zoeken en installeren.
 
  
 
Vooruitlopend vast enkele in het oog springende verschillen tussen Pascal en C/C++:<br>
 
Vooruitlopend vast enkele in het oog springende verschillen tussen Pascal en C/C++:<br>
Regel 54: Regel 56:
 
   JaHetKan: boolean;                          bool JaHetKan;
 
   JaHetKan: boolean;                          bool JaHetKan;
  
if conditie then statement                     if (conditie) statement;  
+
if conditie then statement // geen ;          if (conditie) statement; // ; moet
 
   else anderstatement;                          else anderstatement;   
 
   else anderstatement;                          else anderstatement;   
  

Versie van 20 apr 2024 09:16

Introductie: GUI bouwen met Lazarus / Free Pascal
Schroefje24.png
Schroefje24.png
Schroefje24.png
Schroefje24.png
GUI-Foucault.jpg
Naam GUI bouwen met Lazarus / Free Pascal
Locatie Hack42
Datum Jan 13 1337 13:37:00
Contact JanBee
Info Een Graphical User Interface bouwen met Free-Pascal en de Lazarus IDE
Voorzitter JanBee
GUI-Foucault.jpg File:GUI-Foucault.jpg


Wat

Je hebt een leuk projectje gemaakt met een Arduino of zo, maar nu wil je de gegevens presenteren of je project bedienen in een grafisch scherm op een PC of laptop. Hoe maak je zoiets? Of whatever ander programma met een smoelwerk.

1 van de niet zo vele mogelijkheden om zelf een GUI (Graphical User Interface) te maken is Free Pascal met de Lazarus IDE https://www.freepascal.org/
Deze is goed geïntegreerd (WYSIWYG), gratis, open source, levend, behoeft zo goed als geen configuratie en is beschikbaar voor Windows, Linux, Mac, Raspberry-Pi, Android en nog wel meer...
. De slogan is "Write once, compile everywhere", en dat komt dicht bij de waarheid.

Free Pascal is qua nivo vergelijkbaar met C++, het kent dezelfde structuren maar het heet allemaal net even anders, helaas.
De Lazarus IDE laat je met de muis allerlei controls naar je forms slepen (wysiwyg) en eenvoudig de properties en event-handlers instellen.
Mensen die eerder met MS Visual Basic of VisualC++ gewerkt hebben zullen veel herkennen.

Voorbeelden van door mij met Lazarus-FPC gemaakte GUI's zijn: Het bedieningspaneel van mijn freesbank: http://86.85.156.78/FreesControl.jpg Het dashboard van mijn foucaultslinger: http://86.85.156.78/Foucault.jpg

Deze introductie is bestemd voor mensen die al een redelijke programmeer ervaring hebben met bijv. C++ als bij de Arduino familie. Het is beslist géén beginnerscursus programmeren, wel voor beginners op GUI gebied.

Hoe

Ik denk de introductie in 3 delen te doen:

1: Waarom FPC en Lazarus, hoe gemakkelijk je controls (dat zijn oa die dingen waar je met een muis op kunt klikken) op een formulier kunt zetten, en de concepten van properties en events / event handlers.
En natuurlijk starten we met een "Hello World" exercitie.

2: De basics van Pascal.

3: Communicatie met bijv. een Arduino, zowel seriëel als via een netwerk.

Voorbereiding

Het worden niet echt "Hands On" sessies, maar als je wat wilt experimenteren: Installeer Lazarus / fpc op je laptop:

  • Windows: Google op "Lazarus fpc", download en installeer. Het doet er nier erg toe welke versie.
  • Linux (Mint, Ubuntu e.d.): Met sudo apt-get install lazarus fpc krijg je een wat oudere versie maar die werkt prima. Voor de laatste versie moet je zoeken naar een debian pakket. Soms zijn er 3 pakketten nodig: lazarus, fpc, sources.
  • Mac: Weet ik niet. Zoeken en installeren.

Vooruitlopend vast enkele in het oog springende verschillen tussen Pascal en C/C++:

Pascal                                        C/C++
Niet hoofdlettergevoelig                      Hoofdlettergevoelig

begin                                         {
  < statement block >                           < statement block >
end;                                          }

{ Commentaar }                                 /* Commentaar */ 

var 
  lengte, breedte : real;                      float lengte, breedte;
  Aantal : integer;                            int Aantal;
  JaHetKan: boolean;                           bool JaHetKan;

if conditie then statement // geen ;          if (conditie) statement; // ; moet 
  else anderstatement;                           else anderstatement;   

for i:= 1 to 10 do statement;                  for(i=1; i<=10; i++) statement;
for i:= 10 downto 1 do statement;              for(i=10; i>0; i--) statement; 

function Halveer (P: integer): real;           float Halveer (int P)
const twee = 2;                                {
begin                                            const twee = 2;
  Halveer:= P div twee;                          return(P / twee);
end;                                           }

procedure DoeIets (var K : real);              void DoeIets (float *K)
begin                                          {
  K:= Halveer(K);                                *K = Halveer(*K);
end;                                           }

Animo

Voeg jezelf toe als je interesse hebt in deze introductiecursus: