From 1507b7d590de261d0ff51c2cc41824a2deccf5f8 Mon Sep 17 00:00:00 2001 From: danielvici123 <94993276+danielvici@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:14:16 +0100 Subject: [PATCH] klassenarbeit 2 progp vom 15.1.12025 --- INF/CaptivePortal/CaptivePortal.ino | 99 +++++++++++++++++++ .../25-1-25 -- Vorbereitung KA2/belegung.php | 2 +- progp/Klassenarbeiten/ggt.php | 34 +++++++ progp/Klassenarbeiten/pruefersumme.php | 31 ++++++ progp/lernen/ka_2/arrays.php | 6 ++ 5 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 INF/CaptivePortal/CaptivePortal.ino create mode 100644 progp/Klassenarbeiten/ggt.php create mode 100644 progp/Klassenarbeiten/pruefersumme.php create mode 100644 progp/lernen/ka_2/arrays.php diff --git a/INF/CaptivePortal/CaptivePortal.ino b/INF/CaptivePortal/CaptivePortal.ino new file mode 100644 index 0000000..d51235b --- /dev/null +++ b/INF/CaptivePortal/CaptivePortal.ino @@ -0,0 +1,99 @@ +/* Basisprogramm für ein Captive Portal + * Grundversion, die bei einer Verbindung auf dem Client den Browser öffnet + * und eine Startseite darstellt. + * Der HTML-Code ist rudimentär, um das Beispiel einfach zu halten + * Der Webserver antwortet auf die url / mit der Captive-Seite, bei index.html + * wird eine andere Webseite ausgegeben, die über eine Funktion generiert wird. + * Version 1.0 + * Getestet mit Android-Handy und Android-Tablet => ok + * Gestestet mit Windows-PC => Browser versucht auf eine Microsoft-Adresse umzuleiten + */ +#define __Version__ "V1.0 CaptivePortal" +#include +#include +#include +#include + +const char* ssid = "wlan4win"; // SSID des Netzwerks +const char* password = "lol4win"; // Passwort + +const byte DNS_PORT = 53; +DNSServer dnsServer; +WebServer server(80); + +// IP-Adresse des ESP32 +IPAddress apIP(192, 168, 4, 1); + +// HTML für die Captive Portal-Seite +void handleRoot() { + server.send(200, "text/html", "

Willkommen zum ESP32 Captive Portal!

Du bist jetzt verbunden, jetzt zur Hautpseite wechseln.

"); +} + +void handleNotFound() { + server.sendHeader("Location", "/", true); // Redirect zur Root-Seite + server.send(302, "text/plain", ""); +} + +void handleMain() { + server.send(200, "text/html", getPage()); +} + +void setup() { + Serial.begin(115200); + + // Access Point starten + WiFi.softAP(ssid, password); + // IP-Adresse des ESP, Gateway-Adresse=ESP, Netzmaske + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + Serial.println("Access Point gestartet."); + Serial.println(WiFi.softAPIP()); + + // DNS-Server starten und alle Domains zur AP-IP weiterleiten + dnsServer.start(DNS_PORT, "*", apIP); + + // HTTP-Server konfigurieren + server.on("/", handleRoot); + server.on("/index.html", handleMain); + server.onNotFound(handleNotFound); + server.begin(); + Serial.println("HTTP-Server gestartet."); +} + +void loop() { + uint32_t currentMillis = millis(); + static uint32_t lastMillis; + static uint8_t currentClientCount, lastClientCount; + + dnsServer.processNextRequest(); // DNS-Anfragen verarbeiten + server.handleClient(); // HTTP-Anfragen verarbeiten + + // Optional: 1x pro Sekunde nachschauen, ob sich an der Anzahl der Clients was geändert hat + if (currentMillis - lastMillis >= 1000) { + lastMillis = currentMillis; + currentClientCount = WiFi.softAPgetStationNum(); + + // Überprüfen, ob sich die Anzahl der Clients geändert hat + if (currentClientCount != lastClientCount) { + Serial.printf("Anzahl verbundener Clients: %d\n", currentClientCount); + + // Optional: Aktion für neue Clients + if (currentClientCount > lastClientCount) { + Serial.println("Ein neuer Client hat sich verbunden!"); + } + + // Optional: Aktion für getrennte Clients + if (currentClientCount < lastClientCount) { + Serial.println("Ein Client hat sich getrennt!"); + } + + lastClientCount = currentClientCount; // Aktualisiere den letzten Stand + } + } +} + +String getPage() { + // zunächst nur ganz einfacher HTML-Code, es fehlt der komplette Header, CSS und vieles mehr + String page = "

ESP32 Steuerung

Setze ein Lesezeichen auf diese Seite

"; + page += "

oder gibt die Adresse 192.168.4.1 im Browser ein.

"; + return page; +} \ No newline at end of file diff --git a/progp/25-1-25 -- Vorbereitung KA2/belegung.php b/progp/25-1-25 -- Vorbereitung KA2/belegung.php index 08df77b..e0414c3 100644 --- a/progp/25-1-25 -- Vorbereitung KA2/belegung.php +++ b/progp/25-1-25 -- Vorbereitung KA2/belegung.php @@ -1,5 +1,5 @@ Größter Teiler"; +$zahl_a = 1071; +$zahl_b = 1029; + +function ggt(int $a, int $b):int { + $ausgabe = "NIX"; + $gr_rest = array(); + if ($a > $b) { + $rest = $b; + echo "rechnen...
"; + while($rest != 0){ + $rest = $a % $rest; + //echo $rest."
"; + $gr_rest[] = $rest; + } + array_pop($gr_rest); + echo "Der größte Teiler ist: " . $gr_rest[count($gr_rest)-1]; + echo "
Zahlen: ".$a." und ".$b ; + }else { + echo"a darf nicht kleiner als b sein!
"; + $groester_teiler = -1; + echo "Der größte Teiler ist: $groester_teiler"; + echo "
Zahlen: ".$a." und ".$b ; + } + +} +ggt($zahl_a, $zahl_b); + +?> \ No newline at end of file diff --git a/progp/Klassenarbeiten/pruefersumme.php b/progp/Klassenarbeiten/pruefersumme.php new file mode 100644 index 0000000..1757ddb --- /dev/null +++ b/progp/Klassenarbeiten/pruefersumme.php @@ -0,0 +1,31 @@ +Prüfsumme"; +$zahl_vorgabe = 4581072; + +function idValidator($id):int { + $faktor = 1; + $i = -1; + echo "id".$id; + $arr_id = str_split($id,1); + while( $i < (count($arr_id))){ + $i++; + echo "
".$i+1 .". ".$arr_id[$i]; + if ($i == 2 or $i == 5){ + $faktor = 3; + }else { + $faktor = 1; + } + $arr_faktor = array($faktor * $arr_id[$i]); + print_r($arr_faktor); + $ps = $ps+ $arr_faktor[$i]; + echo ", $ps"; + } + echo"
---
$ps"; +} +idValidator($zahl_vorgabe); +?> \ No newline at end of file diff --git a/progp/lernen/ka_2/arrays.php b/progp/lernen/ka_2/arrays.php new file mode 100644 index 0000000..116e03f --- /dev/null +++ b/progp/lernen/ka_2/arrays.php @@ -0,0 +1,6 @@ + $number = array(1,2,3,5); index: 0 = 1, index 1 = 2, index 2 = 3, index 3 = 5 +asort($number); // => $number = array(1,2,3,4,5); index: 0 = 2, index 1 = 1, index 2 = 5, index 3 = 3 + +?> \ No newline at end of file