Serial port Datensätze verarbeiten

na, hat keiner eine Idee?

Was willst du hier ausgeben ??
// vollständige Datensätze (genau 8 Zeichen lang) ausgeben
if (strlen($datasets[$i]) == 8)
SetValue(28385 /[Cutter\Register Variable\Zaehler 1\1Ausgabe Impulse]/ , (int)$n);
}

dachte du wolltest da die 8bit lange Zeichenkette haben oder ???

// vollständige Datensätze (genau 8 Zeichen lang) ausgeben
if (strlen($datasets[$i]) == 8)
SetValue(28385 /[Cutter\Register Variable\Zaehler 1\1Ausgabe Impulse]/ , (int)$datasets[$i]);
}

ansonsten verstehe ich dein Script nicht… :confused:

Hallo Dapor,

ich möchte den 128 Zeichen langen Datenblock in 8 Böcke teilen und jeden der 8 Blöcke in eine separate Variable schreiben.

Im Script steht nur das was ich mir als Anfänger so versucht habe zusammen zureimen…

okay…

also erstmal ist 128 / 8 = 16 *Adam Riese :wink: *



// $data in Blöcke von bis zu 8 Zeichen zerlegen 
//--> 8 Blöcke zu jeweils 16 Zeilen
$datasets = str_split($data, 16);
}
// alle Datensätze durcharbeiten
for ($i = 0; $i < count($datasets); $i++)
{
// vollständige Datensätze (genau 16 Zeichen lang) ausgeben
if (strlen($datasets[$i]) == 16)
echo $datasets[$i]."<br>"; // erstmal ausgabe, damit du was siehst
//SetValue(28385 , (int)$n); 
}


kann es hier nicht testen, aber so solltest du schon mal die richtigen Blöcke ausgegeben bekommen. Dann schauen wir weiter…

…da hab ich mich etwas vertan…:slight_smile: Eva Zwerg

ich hab den code so eingefügt, bekomme aber kein echo ( müsste doch im Scriptausgabefenster zu sehen sein).
(liegt das daran, dass das Script von der RegiserVariablen gestartet wird?)

lasse ich mir den Wert in der Variablen ausgeben, erhalte ich 2147483647 unabhängig vom tatsächlichen Zählerwert…

du bekommst kein Echo, da das Script nicht per Execute aufgerufen werden kann -> siehe Post von Parsey

aber wenn das Script durch den SerialPort getriggert wird, müsstest du eine Ausgabe in den Meldungen der IPSConsole finden.

Ansonsten kannst du zum Testen auch die Zeile:

$data .= $IPS_VALUE;

durch :

$data .= „HIER DEN BEISPIELSTRING EINFÜGEN“; --> einfach händisch einen Empfangswert, wie er vorkommen kann, einsetzen

die Meldungen lauten:

Notice: Uninitialized string offset: 0 in C:\IP-Symcon\scripts\45181.ips.php
on line 4

Notice: Undefined variable: data in C:\IP-Symcon\scripts\45181.ips.php
on line 6

Notice: Undefined variable: datasets in C:\IP-Symcon\scripts\45181.ips.php
on line 15

Wenn ich:
$data .= $IPS_VALUE;

durch :

$data .= „123456“;

ersetze ändert sich in den Meldungen nichts.

hier das momentane script

<?
$n = "";
$x = explode(chr(0x3B), $IPS_VALUE);
foreach($x as $z) { $n .= ord($z{0}); }
//$data .= $IPS_VALUE;
$data .= "123456"; //einfach händisch einen Empfangswert, wie er vorkommen kann, einsetzen
//wenn $data mindestens 128 Zeichen lang ist
if (strlen($data) >= 128)
{
// $data in Blöcke von bis zu 8 Zeichen zerlegen
//--> 8 Blöcke zu jeweils 16 Zeilen
$datasets = str_split($data, 16);
}
// alle Datensätze durcharbeiten
for ($i = 0; $i < count($datasets); $i++)
{
// vollständige Datensätze (genau 16 Zeichen lang) ausgeben
if (strlen($datasets[$i]) == 16)
echo $datasets[$i]."<br>";

// erstmal ausgabe, damit du was siehst
//SetValue(28385 , (int)$n);
}
?>

ich muss passen…

Hatte bei mir zwar auch kein einfaches Format aber immerhin nicht so codiert…

Entweder stehe ich auf dem Schlauch oder es ist ziemlich kompliziert…

Für den Rest poste doch bitte mal in einer Zeile wie eine RegVar änderung im IPS ankommt -> also den Inhalt der Variable den du parsen willst

Nur nochmal zu deinem Verständnis, Du kannst das Script nicht von Hand starten solange Systemvariablen vorhanden sind!

Entweder Du ersetzt $IPS_VALUE durch deine Daten oder Du machst ein IPS_LogMessage($IPS_SELF, deine Daten); und schaust in den Meldungen nach. Diese kannst Du entkoppeln und neben dein Script ziehen.

Hallo RWN,

mit IPS_LOGMESSAGE, so im Script eingebaut,

<?
$n = "";
$x = explode(chr(0x3B), $IPS_VALUE);
foreach($x as $z) { $n .= ord($z{0}); }
$data .= $IPS_VALUE;

IPS_LogMessage($IPS_SELF, $data);

bekomme ich in der Logdatei diese Meldung:

25.02.2011 11:07:33.781 | 0 | CUSTOM | 45181
; ; ; ; ;ô;2; ; ; ; ; ;è;d;
;; ; ; ; ;Ð;È;;; ; ; ; ;*;;F;; ; ; ; ;@;„;(;; ; ; ;;X; ;P;; ; ; ;0;ˆ;¼;F;; ; ; ;p;è;ô;2;;

25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 28385 | DEBUG | VariableManager | [Cutter\Register Variable\1Ausgabe Impulse] = 2147483647
25.02.2011 11:07:33.781 | 45181 | DEBUG | ExecuteThreadID #3 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 10 ms
25.02.2011 11:07:33.781 | 45181 | MESSAGE | RegisterVariable |

<br />
<b>Notice</b>:
Uninitialized string offset: 0 in <b>C:\IP-Symcon\scripts\45181.ips.php</b> on line <b>4</b>
<br />
<br />
<b>Notice</b>: Undefined variable: data in <b>C:\IP-Symcon\scripts\45181.ips.php</b> on line <b>5</b><br />

Hallo dapor,

in der RegVar kommt an:
00 3B 00 3B 00 3B 00 3B 00 3B 20 3B 1E 3B 01 3B 00 3B 00 3B 00 3B 00 3B E8 3B 58 3B 3C 3B 02 3B 00 3B 00 3B 00 3B 00 3B B8 3B 2C 3B 14 3B 04 3B 00 3B 00 3B 00 3B 00 3B 70 3B 58 3B 28 3B 08 3B 00 3B 00 3B 00 3B 10 3B B8 3B C8 3B 5A 3B 06 3B 00 3B 00 3B 00 3B 20 3B 70 3B F4 3B 5A 3B 02 3B 00 3B 00 3B 00 3B 50 3B B8 3B 64 3B 50 3B 04 3B 00 3B 00 3B A0 3B 00 3B 70 3B 2C 3B 3C 3B 08 3B

wenn ich IPS_LOGMESSAGE so im Script einbaue:

<?
$n = "";
$x = explode(chr(0x3B), $IPS_VALUE);
foreach($x as $z) { $n .= ord($z{0}); }
$data .= $IPS_VALUE;

//IPS_LogMessage($IPS_SELF, $data);

if (strlen($data) >= 128)
{
// $data in Blöcke von bis zu 8 Zeichen zerlegen
//--> 8 Blöcke zu jeweils 16 Zeilen
$datasets = str_split($data, 16);

IPS_LogMessage($IPS_SELF, $datasets);
}

erhalte ich diese Meldung:

25.02.2011 11:32:18.187 | 45181 | MESSAGE | RegisterVariable | <br />
<b>Notice</b>: Uninitialized string offset: 0 in <b>C:\IP-Symcon\scripts\45181.ips.php</b> on line <b>4</b><br />
<br />
<b>Notice</b>: Undefined variable: data in <b>C:\IP-Symcon\scripts\45181.ips.php</b> on line <b>5</b><br />
<br />
<b>Warning</b>: Wrong parameter type for ips_logmessage() in <b>C:\IP-Symcon\scripts\45181.ips.php</b> on line <b>15</b><br />

So wird das nix. Du hast die Variablen nicht definiert, wenn

$data = $IPS_VALUE; 

so und dann fehlt die Schleife zum ermitteln der Daten.

Häng mal die Rohdaten von der seriellen Schnittstelle als Dump an und sag wieviele Variablen Du benötigst. Ich schreib dir das dann mal zusammen.

Hallo RWN,

hier der dump aus der seriellen Schnittstelle.

und der aus dem cutter

und der aus der RV

ach so, ich benötige 8 Variablen…

das Serielle Gerät sendet: (erster Datensatz, zweiter Datensatz den doppelten Wert usw.)

00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 02 3B entspr. 2
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 04 3B entspr. 4
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 08 3B entspr. 8
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 0A 3B 06 3B entspr. 16
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 1E 3B 02 3B entspr. 32
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 3C 3B 04 3B entspr. 64
00 3B 00 3B 00 3B 00 3B 00 3B 64 3B 14 3B 08 3B entspr. 128
00 3B 00 3B 00 3B 00 3B 00 3B C8 3B 32 3B 06 3B entspr. 256

dump.txt (6.01 KB)

dumpcut.txt (14.3 KB)

dumpRV.txt (2.12 KB)

Hier hast mal was zum spielen.

Variablen anlegen und IDs entsprechend eintragen.

Sollte dann so aussehen wie im Anhang.

<?
$variablen = array(30880,15447,41999,14262,13893,55994,35652,40687); // IDs der Variablen eintragen.

if ($IPS_SENDER == "RegisterVariable")
{
    $data = explode('.', $IPS_VALUE);
    //print_r($data);
    foreach($data as $v)
    {
       $value = $v;
       //echo $v."
";
    }
    $datasets = str_split($value, 16);
    //print_r($datasets);
   for ($i = 0; $i < count($datasets); $i++)
   {
      if (strlen($datasets[$i]) == 16)
      {
         echo "empfangener Datensatz: ".Str2Dec(str_replace(';', '', $datasets[$i]))."
";
         SetValueString($variablen[$i], Str2Dec(str_replace(';', '', $datasets[$i])));
        }
   }
}

function Str2Dec($daten)
{
    $Dec = "";
     for($i=0; $i<strlen($daten); $i++)
     $Dec .= sprintf("%02d ", ord($daten[$i]));
     return $Dec; 
}
?>

Wenn oben das funktioniert, kannst Du die Kurzfassung nehmen.

if ($IPS_SENDER == "RegisterVariable")
{
    $data = str_split($IPS_VALUE, 16);
    for ($i = 0; $i < count($data); $i++)
   {
      if (strlen($data[$i]) == 16)
      {
         echo "empfangener Datensatz: ".Str2Dec(str_replace(';', '', $data[$i]))."
";
         SetValueString($variablen[$i], Str2Dec(str_replace(';', '', $data[$i])));
      }
   }
}

function Str2Dec($daten)
{
    $Dec = "";
     for($i=0; $i<strlen($daten); $i++)
     $Dec .= sprintf("%02d ", ord($daten[$i]));
     return $Dec;
}

und das ganze noch als Ergebnis aus den einzelnen Werten.

<?

$variablen = array(27633,19090,43632,55015,46326,25178,25578,59526); // IDs der Variablen eintragen.

if ($IPS_SENDER == "RegisterVariable")
{
    if(strlen($IPS_VALUE) >= 128)
    {
        $data = str_split($IPS_VALUE, 16);
        for ($i = 0; $i < count($data); $i++)
       {
          if (strlen($data[$i]) == 16)
          {
             $r = explode(" ", Str2Dec(str_replace(';', '', $data[$i])));
             $value = array_sum($r);
             echo "empfangener Datensatz: ".Str2Dec(str_replace(';', '', $data[$i]))."als Ergebnis ".$value."
";
             SetValue($variablen[$i], $value);
          }
       }
    }
}

function Str2Dec($daten)
{
    $Dec = "";
   for($i=0; $i<strlen($daten); $i++)
   $Dec .= sprintf("%02d ", ord($daten[$i]));
   return $Dec;
}
    
?>

datensatz.png

Hallo PWN,
vielen Dank, mit Deinem 3. Schript kommen die Zählwerte in den Variablen an.
Allerdings beträgt die Anzahl der Stellen nur 3 und irgendwie verhaspelt sich der Zählerwert. Zum Beispiel hier:
Jeder Zähler fängt so an.
der erste +1, der 2. +2, der 3. +4 usw.
Ein Problem tritt zuerst bei Zähler 8 auf (+128) im 3. Durchlauf müsste der Wert 384 ausgegeben werden.

28.02.2011 13:18:20.921 | 15211 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 1] = 1
28.02.2011 13:18:20.921 | 11106 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 2] = 2
28.02.2011 13:18:20.921 | 29080 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 3] = 4
28.02.2011 13:18:20.921 | 44612 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 4] = 8
28.02.2011 13:18:20.921 | 48494 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 5] = 16
28.02.2011 13:18:20.921 | 58101 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 6] = 32
28.02.2011 13:18:20.937 | 46312 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 7] = 64
28.02.2011 13:18:20.937 | 31901 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 8] = 128

28.02.2011 13:18:20.937 | 54783 | DEBUG | ExecuteThreadID #10 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 21 ms
28.02.2011 13:18:20.937 | 54783 | MESSAGE | RegisterVariable |

empfangener Datensatz: 00 00 00 00 00 00 00 01 als Ergebnis 1

empfangener Datensatz: 00 00 00 00 00 00 00 02 als Ergebnis 2

empfangener Datensatz: 00 00 00 00 00 00 00 04 als Ergebnis 4

empfangener Datensatz: 00 00 00 00 00 00 00 08 als Ergebnis 8

empfangener Datensatz: 00 00 00 00 00 00 10 06 als Ergebnis 16

empfangener Datensatz: 00 00 00 00 00 00 30 02 als Ergebnis 32

empfangener Datensatz: 00 00 00 00 00 00 60 04 als Ergebnis 64

empfangener Datensatz: 00 00 00 00 00 100 20 08 als Ergebnis 128

28.02.2011 13:18:23.078 | 54783 | DEBUG | ExecuteThreadID #6 | Skriptausführung: 54783.ips.php ~ Absender: RegisterVariable
28.02.2011 13:18:23.078 | 15211 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 1] = 2
28.02.2011 13:18:23.078 | 11106 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 2] = 4
28.02.2011 13:18:23.078 | 29080 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 3] = 8
28.02.2011 13:18:23.093 | 44612 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 4] = 16
28.02.2011 13:18:23.093 | 48494 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 5] = 32
28.02.2011 13:18:23.093 | 58101 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 6] = 64
28.02.2011 13:18:23.093 | 46312 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 7] = 128
28.02.2011 13:18:23.093 | 31901 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 8] = 256

28.02.2011 13:18:23.093 | 54783 | DEBUG | ExecuteThreadID #6 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 22 ms
28.02.2011 13:18:23.093 | 54783 | MESSAGE | RegisterVariable |

empfangener Datensatz: 00 00 00 00 00 00 00 02 als Ergebnis 2

empfangener Datensatz: 00 00 00 00 00 00 00 04 als Ergebnis 4

empfangener Datensatz: 00 00 00 00 00 00 00 08 als Ergebnis 8

empfangener Datensatz: 00 00 00 00 00 00 10 06 als Ergebnis 16

empfangener Datensatz: 00 00 00 00 00 00 30 02 als Ergebnis 32

empfangener Datensatz: 00 00 00 00 00 00 60 04 als Ergebnis 64

empfangener Datensatz: 00 00 00 00 00 100 20 08 als Ergebnis 128

empfangener Datensatz: 00 00 00 00 00 200 50 06 als Ergebnis 256

28.02.2011 13:18:25.234 | 54783 | DEBUG | ExecuteThreadID #1 | Skriptausführung: 54783.ips.php ~ Absender: RegisterVariable
28.02.2011 13:18:25.234 | 15211 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 1] = 3
28.02.2011 13:18:25.250 | 11106 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 2] = 6
28.02.2011 13:18:25.250 | 29080 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 3] = 12
28.02.2011 13:18:25.250 | 44612 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 4] = 24
28.02.2011 13:18:25.250 | 48494 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 5] = 48
28.02.2011 13:18:25.250 | 58101 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 6] = 96
28.02.2011 13:18:25.250 | 46312 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 7] = 192
28.02.2011 13:18:25.265 | 31901 | MESSAGE | VariableManager | [Cutter\Register Variable\Ausgabe\Ausgabe 8] = 128

28.02.2011 13:18:25.265 | 54783 | DEBUG | ExecuteThreadID #1 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 20 ms
28.02.2011 13:18:25.265 | 54783 | MESSAGE | RegisterVariable |

empfangener Datensatz: 00 00 00 00 00 00 00 03 als Ergebnis 3

empfangener Datensatz: 00 00 00 00 00 00 00 06 als Ergebnis 6

empfangener Datensatz: 00 00 00 00 00 00 10 02 als Ergebnis 12

empfangener Datensatz: 00 00 00 00 00 00 20 04 als Ergebnis 24

empfangener Datensatz: 00 00 00 00 00 00 40 08 als Ergebnis 48

empfangener Datensatz: 00 00 00 00 00 00 90 06 als Ergebnis 96

empfangener Datensatz: 00 00 00 00 00 100 90 02 als Ergebnis 192

empfangener Datensatz: 00 00 00 00 00 44 80 04 als Ergebnis 128

28.02.2011 13:18:27.390 | 54783 | DEBUG | ExecuteThreadID #8 | Skriptausführung: 54783.ips.php ~ Absender: RegisterVariable

zum Vergleich die Daten in der RegisterVariablen

00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 01 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 0A 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 1E 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 3C 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 64 3B 14 3B 08 3B

28.02.2011 13:37:40.00 | Received Data |

00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 0A 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 1E 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 3C 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 64 3B 14 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B C8 3B 32 3B 06 3B

28.02.2011 13:37:42.00 | Received Data

00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 03 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 0A 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 14 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 28 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 5A 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B 64 3B 5A 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 2C 3B 50 3B 04 3B

28.02.2011 13:37:44.00 | Received Data

00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 0A 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 1E 3B 02 3B
00 3B 00 3B 00 3B 00 3B 00 3B 00 3B 3C 3B 04 3B
00 3B 00 3B 00 3B 00 3B 00 3B 64 3B 14 3B 08 3B
00 3B 00 3B 00 3B 00 3B 00 3B C8 3B 32 3B 06 3B
00 3B 00 3B 00 3B 00 3B 00 3B F4 3B 0A 3B 02 3B

Was willst Du mir damit sagen. Das Script wertet das aus was an Daten rein kommt.

Vielleicht solltest Du mal die Bedeutung Hex und Dez differenzieren.

hab mir das noch mal in Ruhe angesehen, Danke für Deinen Hinweis, ich prüfe noch mal das, wass die serielle Komponente tatsächlich sendet. Vermutlich liegt der Fehler dort.

hallo, ich hab noch mal einiges Versucht, stehe aber noch immer auf dem Schlauch :confused:
IPS macht irgendwie komische Sachen mit den empfangenen Datensätzen.
Weiter unten habe ich drei unterschiedliche Datensätze welche alle als Ergebnis 27 ausgegeben werden…

hat jemand eine Idee?
Zum Vergleich habe ich die Daten mit Hterm ausgelesen das geht.
Und auch in einer anderen Software kommen die Zählerdaten wie beabsichtigt an.

ist eventuell im Script noch etwas einzustellen?

[Cutter\Register Variable\Ausgabe\Ausgabe 3] = 18
[Cutter\Register Variable\Ausgabe\Ausgabe 4] = 27
[Cutter\Register Variable\Ausgabe\Ausgabe 5] = 27
[Cutter\Register Variable\Ausgabe\Ausgabe 6] = 36
[Cutter\Register Variable\Ausgabe\Ausgabe 7] = 36
[Cutter\Register Variable\Ausgabe\Ausgabe 8] = 27
Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 18 ms
empfangener Datensatz: 00 00 00 00 08 05 05 09 als Ergebnis 27
empfangener Datensatz: 00 00 00 01 07 01 01 08 als Ergebnis 18
empfangener Datensatz: 00 00 00 03 04 02 03 06 als Ergebnis 18
empfangener Datensatz: 00 00 00 06 08 04 07 02 als Ergebnis 27
empfangener Datensatz: 00 00 01 03 06 09 04 04 als Ergebnis 27
empfangener Datensatz: 00 00 02 07 03 08 08 08 als Ergebnis 36
empfangener Datensatz: 00 00 05 04 07 07 07 06 als Ergebnis 36
empfangener Datensatz: 00 01 00 09 05 05 05 02 als Ergebnis 27

Ich würde dir ja gerne weiterhelfen, leider weis ich nicht wie. Wenn Du doch in anderen Programmen andere Ergebnisse hast, kann doch mit deinen Einstellungen etwas nicht stimmen. Baudrate, Stopbit, Parity usw. Ist das überall gleich.

Das Script wertet nur das aus, was es bekommt und das ist Mathematik 2. Klasse, Addition.

Ansonsten sieh dir den Hexstring an der ankommt und wandel in um nach Dezimal. Zusammen zählen und schauen was dabei rauskommt. :slight_smile:

Wobei er sich bei den dargesteltten Datensätzen des letzten Posts das Umwandeln noch sparen kann. :smiley:
Ist das gemein.