Hallo,
ich habe das Problem eine Funktion in ein Modul zu übernehmen.
Die Funktion sieht wie folgt aus:
$HC1 = "3421"; //HC1 Wert
$HC2 = "2143"; //HC2 Wert
$FS20Adresse = "1111"; // Adresse
//Config End
$FS20_send = Calculate($FS20Adresse, $HC1, $HC2);
Echo $FS20_send;
function Calculate($FS20Adresse, $HC1, $HC2)
{
$FS20_Code = $HC1.$HC2.$FS20Adresse;
$arr1 = str_split($FS20_Code);
print_r($arr1);
/* Stelle um 1 reduzieren */
for ($i = 0; $i <= 11; $i++)
{
$arr1[$i] = $arr1[$i] -1;
/* Aufteilung in Zweierblöcke */
/* Die jeweils erste Zahl eines Blocks wird mit 4 multipliziert und mit der zweiten Zahl addiert */
for ($i = 0; $i <= 10; $i=$i+2)
{
$arr2[$i] = $arr1[$i] * 4 + $arr1[$i+1];
}
/* Jeder Block wird nun in seine Hexadezimaldarstellung überführt (0-9, A-F) */
for ($i = 0; $i <= 10; $i=$i+2)
{
$arr2[$i] = dechex($arr2[$i]);
}
$FS20_send = $arr2[0].$arr2[2].$arr2[4].$arr2[6].$arr2[8].$arr2[10];
return $FS20_send;
}
Diese Funktion rechnet mir einen Sendecode aus.
Wenn ich nun versuche diese Funktion in ein Modul zu übernehmen in der Form
//Berechnung des FS20 Codes
public function Calculate()
{
$HC1 = $this->ReadPropertyString("HC1");
$HC2 = $this->ReadPropertyString("HC2");
$FS20Adresse = $this->ReadPropertyString("Adresse");
$FS20_Code = $HC1.$HC2.$FS20Adresse;
$arr1 = str_split($FS20_Code);
print_r($arr1);
/* Stelle um 1 reduzieren */
for ($i = 0; $i <= 11; $i++)
{
$arr1[$i] = $arr1[$i] -1; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FEHLER undefined Offset
}
/* Aufteilung in Zweierblöcke */
/* Die jeweils erste Zahl eines Blocks wird mit 4 multipliziert und mit der zweiten Zahl addiert */
for ($i = 0; $i <= 10; $i=$i+2)
{
$arr2[$i] = $arr1[$i] * 4 + $arr1[$i+1];
}
/* Jeder Block wird nun in seine Hexadezimaldarstellung überführt (0-9, A-F) */
for ($i = 0; $i <= 10; $i=$i+2)
{
$arr2[$i] = dechex($arr2[$i]);
}
$FS20_send = $arr2[0].$arr2[2].$arr2[4].$arr2[6].$arr2[8].$arr2[10];
return $FS20_send;
}
Dann haut es mir die Fehlermeldung undefined Offset um die Ohren da anscheinend etwas mit dem Array nicht stimmt.
Ich weis jetzt aber im ersten Blick nicht was der direkte Grund für den Fehler sein könnte bzw wie dieser zu beheben ist. Hat eventuell einer einen Tipp?