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

199 lines
5.2 KiB
PHP

<?php
// ===========================================================================================
// Analyse-Funktionen für die Spurkabelprüfung, Federleistenprüfung und Selbstidiagnose
// ===========================================================================================
//Übsersetzungstabelle (Intern -> Steckerpin, gilt für Programmsteckerprüfung)
$translationMap = [
"0" => "18",
"1" => "19",
"2" => "20",
"3" => "21",
"4" => "22",
"5" => "23",
"6" => "24",
"7" => "25",
"8" => "10",
"9" => "11",
"10" => "12",
"11" => "13",
"12" => "14",
"13" => "15",
"14" => "16",
"15" => "17",
"16" => "34",
"17" => "35",
"18" => "36",
"19" => "37",
"20" => "38",
"21" => "39",
"22" => "40",
"23" => "41",
"24" => "26",
"25" => "27",
"26" => "28",
"27" => "29",
"28" => "30",
"29" => "31",
"30" => "32",
"31" => "33"
];
//Übsersetzungstabelle (Intern -> Steckerpin, gilt für Spurkabelprüfung)
$translationMap2 = [
"0" => "25",
"1" => "24",
"2" => "23",
"3" => "22",
"4" => "21",
"5" => "20",
"6" => "19",
"7" => "18",
"8" => "17",
"9" => "16",
"10" => "15",
"11" => "14",
"12" => "13",
"13" => "12",
"14" => "11",
"15" => "10",
"16" => "41",
"17" => "40",
"18" => "39",
"19" => "38",
"20" => "37",
"21" => "36",
"22" => "35",
"23" => "34",
"24" => "33",
"25" => "32",
"26" => "31",
"27" => "30",
"28" => "29",
"29" => "28",
"30" => "27",
"31" => "26"
];
// Diese Funktion übersetzt die interne Pin-Bezeichnung in die des Herstellers gem. translationMap
// weil die Hardware der Spurkabelprüfer anders verschaltet ist, als die des Programmsetckerprüfers, wird nach zwei Übersetzungstabellen bei der Spurkabelprüfung gearbeitet
// nodes[0] wird gem Standardtabelle gehandhabt, nodes[1] nach translationMap2 - unsauber, aber nur durhc Software lösbar
function translateArray($inputArray, $translationMap, $translationMap2 = null) {
return array_map(function($subArray) use ($translationMap, $translationMap2) {
$map1 = $translationMap;
$map2 = $translationMap2 ?? $translationMap; // Wenn keine zweite Map, nimm die erste
return [
$map1[$subArray[0]] ?? $subArray[0],
$map2[$subArray[1]] ?? $subArray[1]
];
}, $inputArray);
}
function measurementsDiffer($bridges1, $bridges2) {
//Isoliere die Brücken
$bridges1 = array_map(function($entry) {
return $entry[0];
}, $bridges1);
$bridges2 = array_map(function($entry) {
return $entry[0];
}, $bridges2);
//Zeichne die Steckergrafik
$url1 = "../stecker.php?data=" . urlencode(json_encode(translateArray($bridges1, $translationMap)));
$url2 = "../stecker.php?data=" . urlencode(json_encode(translateArray($bridges2, $translationMap)));
?>
<p>
Es gab einen Fehler bei der Messung!</br>Messung 1 und Messung 2 lieferten keine übereinstimmenden Ergebnisse.<br>Bitte prüfen Sie, ob alle Steckverbindungen fest sitzen und vermeiden Sie Bewegungen, welche die Messung beeinträchtigen können.</br>Stellen Sie sicher, dass keine der Verbindungen gegen Erde kurzgeschlossen ist, da dies die Messung beeinträchtigt.<br>Erwägen Sie, eine erneute Messung durchzuführen.
</p>
<br>
<p>Ergebnis Messung 1:</p>
<i><?php print_r($output1); ?><i>
<img src="<?php echo $url1; ?>" />
<p>Ergebnis Messung 2:</p>
<i><?php print_r($output2); ?><i>
<img src="<?php echo $url2; ?>" />
<div class="save-button" onclick="window.location.href='#index'; pageload();$('.save-button').html('<img src=\'load.gif\' \>Bitte warten...');"><img src="/vendor/icons/nav-arrow-left.svg" \>Zurück</div>
<?php
die();
}
function measurementsContainErrors($bridges) {
?>
<h3>Eine oder mehrere Prüfungen versagten. Vollständige Fehlerausgabe:</h3>
<table>
<tr><td>Brücke von</td><td>nach</td><td>Aufgetretene Fehler</td>
<?php
foreach($bridges as $bridge) {
echo "<tr><td>" . $bridge[0][0] . "</td><td>" . $bridge[0][1] . "</td><td>" . $bridge[1] . "</td></tr>";
}
?>
</table>
<hr>
<h3>Fehlercodes:</h3>
<?php
include("../errorcodes.php");
die();
}
/*
Ootionale Funktion, die implizite Verbindungen herleitet (KI-generiert)
function completeCycleEdges(array $edges): array {
// 1. Alle einzigartigen Knoten extrahieren
$nodes = [];
foreach ($edges as $edge) {
foreach ($edge as $node) {
$nodes[$node] = true;
}
}
$nodes = array_keys($nodes);
// 2. Sortiere Knoten (optional, für konsistente Reihenfolge)
sort($nodes);
// 3. Erstelle vollständigen Kreis (Verbindung i -> i+1, letzter -> erster)
$completeEdges = [];
$numNodes = count($nodes);
for ($i = 0; $i < $numNodes; $i++) {
$from = $nodes[$i];
$to = $nodes[($i + 1) % $numNodes]; // Kreis schließen
$completeEdges[] = [$from, $to];
}
return $completeEdges;
}
$edges = [[0,1], [2,0]];
$result = completeCycleEdges($edges);
print_r($result);
*/
?>