Hallo carverandi
das mitgelieferte USB <--> RS232 sollte passen! läuft bei mir jedenfalls.
Versuch mal den Code
Code: Alles auswählen
elseif (strlen( $Ergebnis ) == 78) {
$Ergebnis1 = substr( $Ergebnis, 4, 8 );
$Ergebnis1 .= substr( $Ergebnis, 17, 8 );
$Ergebnis1 .= substr( $Ergebnis, 30, 8 );
$Ergebnis1 .= substr( $Ergebnis, 43, 8 );
$Ergebnis1 .= substr( $Ergebnis, 56, 8 );
$Ergebnis1 .= substr( $Ergebnis, 69, 8 );
$Ergebnis1 .= substr( $Ergebnis, 82, 8 );
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = $Ergebnis1;
}
mit diesem zu ersetzen:
Code: Alles auswählen
elseif (strlen( $Ergebnis ) == 52) {
$Ergebnis1 = substr( $Ergebnis, 4, 8 );
$Ergebnis1 .= substr( $Ergebnis, 17, 8 );
$Ergebnis1 .= substr( $Ergebnis, 30, 8 );
$Ergebnis1 .= substr( $Ergebnis, 43, 8 );
$Ergebnis1 .= substr( $Ergebnis, 56, 8 );
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = $Ergebnis1;
}
Wie im Beitrag
viewtopic.php?p=13012#p13012 geschrieben sollte der
Aufbau folgendermaßen sein: 3 Zellen pro Antwort [13]
Code: Alles auswählen
A5 01 95 08 01 0C CB 0C C6 0C CF E0 A8 ---- fortlaufende NR 01 Zellspannungen je 3x in mV
A5 01 95 08 02 0C C5 0C CB 0C C9 E0 A2 ---- fortlaufende NR 02 Zellspannungen je 3x in mV
A5 01 95 08 03 0C CF 0C C6 0C CC E0 AB ---- fortlaufende NR 03 Zellspannungen je 3x in mV
A5 01 95 08 04 0C C7 0C CF 0C C7 E0 A8 ---- fortlaufende NR 04 Zellspannungen je 3x in mV
A5 01 95 08 05 0C CD 0C C9 0C CD E0 AF ---- fortlaufende NR 05 Zellspannungen je 3x in mV
A5 01 95 08 06 0C C5 0C C9 0C CD E0 A8 ---- fortlaufende NR 06 Zellspannungen je 3x in mV
bei den "208" vermute ich, sollte dies dann für 48 Zellen sein.
function eSmart3_auslesen sieht bei mir so aus:
Code: Alles auswählen
/************************************************************************/
function eSmart3_auslesen( $Device, $Befehl = '' ) {
$Antwort = "";
$OK = false;
stream_set_blocking( $Device, false ); // Es wird auf keine Daten gewartet.
fgets( $Device, 4092 );
$Dauer = 2; // 4 Sekunden
// echo $Befehl."\n";
$rc = fwrite( $Device, hex2bin( $Befehl ));
usleep( 500000 );
$Timestamp = time( );
$Ergebnis = "";
$Antwort = "";
do {
$Antwort = fgets( $Device, 192 );
// echo bin2hex($Antwort)."\n";
if (trim( $Antwort ) == "") {
// echo "Nichts empfangen .. \n";
usleep( 100000 );
}
else {
$Ergebnis .= $Antwort;
if (strtoupper( substr( bin2hex( $Ergebnis ), 0, 2 )) == "AA") {
$Datenlaenge = hexdec( substr( bin2hex( $Ergebnis ), 10, 2 ));
if (strlen( $Ergebnis ) >= ($Datenlaenge + 7)) {
// Paket ist komplett
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
}
}
elseif (strtoupper( substr( bin2hex( $Ergebnis ), 0, 4 )) == "A501") {
// echo "Länge: ".strlen($Ergebnis)."\n";
if (strlen( $Ergebnis ) == 13) {
// Paket ist komplett
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = substr( $Ergebnis, 4, 8 );
}
if (strlen( $Ergebnis ) == 26) {
// Paket ist komplett
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis1 = substr( $Ergebnis, 4, 8 );
$Ergebnis1 .= substr( $Ergebnis, 17, 8 );
$Ergebnis = $Ergebnis1;
}
elseif (strlen( $Ergebnis ) == 208) {
$Ergebnis1 = substr( $Ergebnis, 4, 8 );
$Ergebnis1 .= substr( $Ergebnis, 17, 8 );
$Ergebnis1 .= substr( $Ergebnis, 30, 8 );
$Ergebnis1 .= substr( $Ergebnis, 43, 8 );
$Ergebnis1 .= substr( $Ergebnis, 56, 8 );
$Ergebnis1 .= substr( $Ergebnis, 69, 8 );
$Ergebnis1 .= substr( $Ergebnis, 82, 8 );
$Ergebnis1 .= substr( $Ergebnis, 95, 8 );
$Ergebnis1 .= substr( $Ergebnis, 108, 8 );
$Ergebnis1 .= substr( $Ergebnis, 121, 8 );
$Ergebnis1 .= substr( $Ergebnis, 134, 8 );
$Ergebnis1 .= substr( $Ergebnis, 147, 8 );
$Ergebnis1 .= substr( $Ergebnis, 160, 8 );
$Ergebnis1 .= substr( $Ergebnis, 173, 8 );
$Ergebnis1 .= substr( $Ergebnis, 186, 8 );
$Ergebnis1 .= substr( $Ergebnis, 199, 8 );
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = $Ergebnis1;
}
elseif (strlen( $Ergebnis ) == 78) {
$Ergebnis1 = substr( $Ergebnis, 4, 8 );
$Ergebnis1 .= substr( $Ergebnis, 17, 8 );
$Ergebnis1 .= substr( $Ergebnis, 30, 8 );
$Ergebnis1 .= substr( $Ergebnis, 43, 8 );
$Ergebnis1 .= substr( $Ergebnis, 56, 8 );
$Ergebnis1 .= substr( $Ergebnis, 69, 8 );
$Ergebnis1 .= substr( $Ergebnis, 82, 8 );
$Dauer = 0; // Ausgang vorbereiten..
$OK = true;
$Ergebnis = $Ergebnis1;
}
}
}
} while (($Timestamp + $Dauer) > time( ));
stream_set_blocking( $Device, true );
if ($OK == true) {
return bin2hex( $Ergebnis );
}
return false;
Gruß