Files
t2000-steckerpruefer/pagecontent/start-cable.php
2026-01-02 20:52:43 +01:00

123 lines
3.1 KiB
PHP
Executable File

<?php
session_start();
require("../functions.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$db = new SQLite3('../db-test/test.db');
//Befehl zum Starten des Skripts
$command = escapeshellcmd('python3 /var/www/html/python/cable-check.py');
//output1 und bridges1 sind die Ergebnisse des ersten Durchlaufs
$output1 = json_decode(shell_exec($command), true);
$bridges1 = $output1["data"];
//Zeigt schon der Erste durchlauf Fehler auf, kann abgebrochen werden (1. Fehlerfall)
if($output1["logs"]["errorcode"] != 10) {
?>
<h3>
Die Prüfung konnte nicht abgeschlossen werden. <i>Fehler <?php echo $output1["logs"]["errorcode"]; ?></i>
</h3>
<?php
include("../errorcodes.php");
die();
}
//wenn bis hierhin ok: weitere Prüfung
$output2 = json_decode(shell_exec($command), true);
$bridges2 = $output2["data"];
//Die Messungen sind nicht identisch (egal ob wg Fehlercodes oder Daten, ungleiche Messungen sind immer schlecht) -> 2. Fehlerfall
//es wäre schon sehr eigenartig, wenn verschiedene Fehlercodes nacheinander ausgespuckt würden (Wackelkontakt?)
if($bridges1 !== $bridges2) {
measurementsDiffer($bridges1, $bridges2);
}
// Isoliere die Brücken und speichere sie als $bridges (hiermit wird später alles weitere verarbeitet)
$bridges = array_map(function($entry) {
return $entry[0];
}, $bridges1);
//Isoliere die Fehlercodes der ersten Messung; da Messungen identisch reicht erste Messung
$errors = array_filter($bridges1, function($entry) {
return $entry[1] !== 0;
});
//Wenn Fehlerspeicher gefüllt: Ausgabe und Abbruch
if (!empty($errors)) {
measurementsContainErrors($bridges1);
}
// ----------
//Ab hier wird die Logik geprüft, die Messung ist bis hierhin äußerlich in Ordnung
// ----------
$bridges = translateArray($bridges, $translationMap, $translationMap2);
$cleaned_output = [];
$errors = [];
$ok = true;
// iteriere durch die Messung und prüfe, ob stets gilt [[20,20],[22,22]]
//wenn nein: Kurzschluss ($errors)
foreach($bridges as $bridge) {
if($bridge[0] == $bridge[1]) {
$cleaned_output[] = $bridge[0];
}
else {
$ok = false;
$errors[] = $bridge;
}
}
//Haupt-Steckergrafik
$url = 'stecker.php?mode=fill&data=' . urlencode(json_encode($cleaned_output));
?>
<div class="content-header">Ergebnis</div>
<hr />
<h2>Vollständigkeit</h2>
<p><i>Die folgende Grafik zeigt Ihnen, auf welchen Adern eine durchgängige Verbindung erkannt wurde. Nur, wenn alle Pins grün gefüllt sind, ist das Spurkabel in Ordnung!</i></p>
<img src="<?php echo $url; ?>" />
<?php
$url = 'stecker.php?data=' . urlencode(json_encode($errors)); // Kodiert es für die URL
?>
<h2>Unzulässigkeiten</h2>
<p><i>Die folgende Grafik zeigt Ihnen, auf welchen Adern eine Verbindung zu einer anderen Ader erkannt wurde. Ist die Grafik leer, sind alle Adern korrekt isoliert.</i></p>
<?php
if($ok != true) {
?>
<p style='color: red !important'>
Es wurde mindestens ein Kurzschluss gefunden!
</p>
<?php
}
?>
<img src="<?php echo $url; ?>" />
<div class="save-button" onclick="window.location.href='#cable-check';"><img src="/vendor/icons/nav-arrow-left.svg" \>Zurück</div>