Dies passt soweit auch, jedoch wird dort eine max Anzahl (48) von Zellen verwendet.
In der Funktion "function eSmart3_auslesen" werden die ankommenden Daten auf Länge
geprüft. Da diese jedoch von den Zellen (BMS-Typ) abhängig sind, werden die Daten verworfen
wenn sie nicht der Prüfung "Datenlänge" entsprechen und eine Fehlermeldung generiert.
Die Antwort vom Daly-BMS ist immer 13 Byte. Ausgenommen sind die Zellspannungen.
siehe viewtopic.php?p=13012#p13012
Der Code muss so aussehen: kleinstes Ganzzahliges vielfaches von Zellen des BMS und 3.
genaue oder nächstgrößere Anzahl durch 3 teilbar.
10 Zellen /3 =3.333 -----> 4 (4*13)
16 Zellen /3 =5,333 ----> 6 (6*13)
24 Zellen /3 = 8 ------> ok 8 (8*13)
Dieser Wert wird dann mit 13 multipliziert und so eingetragen werden (XX)
Code: Alles auswählen
elseif (strlen( $Ergebnis ) == XX) { // Hier muß XX eingetragen werden
1-3 $Ergebnis1 = substr( $Ergebnis, 4, 8 ); so viele Zeilen wie laut Rechnung (16Zellen ---> 6Zeilen)
4-6 $Ergebnis1 .= substr( $Ergebnis, 17, 8 );
7-9 $Ergebnis1 .= substr( $Ergebnis, 30, 8 );
10-12 $Ergebnis1 .= substr( $Ergebnis, 43, 8 );
..... $Ergebnis1 .= substr( $Ergebnis, 56, 8 );
..... $Ergebnis1 .= substr( $Ergebnis, 82, 8 );
immer fortlaufend , mit einer Folge von 13
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = $Ergebnis1;
}
Gruß