klassenarbeit 2 progp vom 15.1.12025

This commit is contained in:
danielvici123
2025-01-15 13:14:16 +01:00
parent 2d0894a8f3
commit 1507b7d590
5 changed files with 171 additions and 1 deletions

View File

@@ -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 <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>
#include <DNSServer.h>
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", "<h1>Willkommen zum ESP32 Captive Portal!</h1><p>Du bist jetzt verbunden, jetzt zur <a href=/index.html>Hautpseite</a> wechseln.</p>");
}
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 = "<h1>ESP32 Steuerung</h1><p>Setze ein Lesezeichen auf diese Seite</p>";
page += "<p>oder gibt die Adresse 192.168.4.1 im Browser ein.</p>";
return page;
}

View File

@@ -1,5 +1,5 @@
<?php <?php
function sucheMinBelegung(zimmerliste: Zimmer[], weiblich: boolean): int { function sucheMinBelegung($zimmerliste, $weiblich) {
$minIndex = -1; $minIndex = -1;
$belegung = 1.0; $belegung = 1.0;
$minBelegung = 1; $minBelegung = 1;

View File

@@ -0,0 +1,34 @@
<?php
// #################
// # NAME #
// # DANIEL CWIKLA #
// #################
echo "<h2>Größter Teiler</h2>";
$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...<br>";
while($rest != 0){
$rest = $a % $rest;
//echo $rest."<br>";
$gr_rest[] = $rest;
}
array_pop($gr_rest);
echo "Der größte Teiler ist: " . $gr_rest[count($gr_rest)-1];
echo "<br> Zahlen: ".$a." und ".$b ;
}else {
echo"a darf nicht kleiner als b sein!<br>";
$groester_teiler = -1;
echo "Der größte Teiler ist: $groester_teiler";
echo "<br> Zahlen: ".$a." und ".$b ;
}
}
ggt($zahl_a, $zahl_b);
?>

View File

@@ -0,0 +1,31 @@
<?php
// #################
// # NAME #
// # DANIEL CWIKLA #
// #################
echo "<h2>Prüfsumme</h2>";
$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 "<br>".$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"<br>---<br>$ps";
}
idValidator($zahl_vorgabe);
?>

View File

@@ -0,0 +1,6 @@
<?php
$number = $array(3,5,1,2); // index 0 = 3, index 1 = 5, index 2 = 1, index 3 = 2
sort($number); // => $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
?>