Was heisst diese Zeile?

Gast #2229533
Lesenswert?

Hallo!
Ich möchte vom Motor-Can was lesen.
Habe zum Beispiel das hier gefunden:
Auf der ID 420 sollen verschiedene Temperaturen drauf sein.
Was könnte diese Zeile bedeuten:
// rprintfStr("Temp coolant= "); rprintfdec((can_buff[3]-100)/2);

aus dem Link:
http://audiforum.us/threads/id-codes-can-protocol.4999/
post nr.1 ganz am ende.

Verstehe ich das Richtig?
rprintfStr - Ausgabe auf den LCD
"Temp coolant= " als text ausgeben
rprintfdec - keine Ahnung
can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)
-100  -aus dem ausgelesenen Wert 100 abziehen
/2 - und die Differenz durch 2 teilen

Kann leider kein C oder Assembler (was immer das ist)

Danke
Gruss
Alex
#2229540
Lesenswert?

Ob rprintfdec tatsächlich auf einem LCD ausgibt oder nicht, weiss nur 
der, der die Funktion geschrieben hat. Da da aber die Worthülse 'print' 
im Funktionsnamen vorkommt, ist der Gedanke naheliegend, dass da wohl 
irgendeine Ausgabe erfolgen wird.

Allerdings hast du am Anfang die // übersehen.
Die bedeuten, dass die ganze Zeile auskommentiert ist und somit den 
COmpiler nicht weiter zu interessieren hat.

> can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)

das 4. te Byte. In C wird bei 0 angefangen zu zählen.

> -100  -aus dem ausgelesenen Wert 100 abziehen
> /2 - und die Differenz durch 2 teilen

ist wohl naheliegend :-)
Gast #2229548
Lesenswert?

Alex schrieb:
> can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)
> -100  -aus dem ausgelesenen Wert 100 abziehen
> /2 - und die Differenz durch 2 teilen

Irgendwas kann da nicht stimmen:
Byte 3 kann maximal 250 werden
bei Offset 100 und Skalierung durch 2 wäre die maximal
mögliche Temperatur 75 Grad.

Muß schon ein sehr energiesparendes Fahrzeug sein.

Gruß Anja
Gast #2229554
Lesenswert?

>bei Offset 100 und Skalierung durch 2 wäre die maximal
>mögliche Temperatur 75 Grad.

DAS ist der Punkt, wo ich nicht weiter komme.
Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com 
(diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.

mein Problem ist jetzt die Umrechnung.

Gruss Alex
Gast #2229561
Lesenswert?

Alex schrieb:
> DAS ist der Punkt, wo ich nicht weiter komme.
> Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com
> (diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.
>
> mein Problem ist jetzt die Umrechnung.

Dann laß doch das Auto auf 20 Grad abkühlen und meß noch mal.
Dann hast Du 2 Gleichungen mit 2 Unbekannten.

Ich wette es kommt ein 0ffset 64 und eine Auflösung 0.75 Grad/Digit 
heraus.
Entsprechend -48 .. 140 Grad.

Gruß Anja
Gast #2229562
Lesenswert?

>Bist du sicher, dass der Code richtig ist?

Nein, ich bin sicher, dass die ID richtig ist.
Auf der ID sind insgesammt 6 bytes.
Die ersten 3 verändern sich kaum beim Kalten und warmen Motor, die 
nächsten 2 können Öl und Wassertemperaturen sein, und das Letzte (byte 
6) ist mir auch rätzelhaft.
Gruss Alex
Gast #2229564
Lesenswert?

>Ich wette es kommt ein 0ffset 64 und eine Auflösung 0.75 Grad/Digit
>heraus.

Darf ich fragen, wie du darauf kommst?

P.S. ich warte schon seit Stunden, bis das Auto abkühlt. Wird noch 
dauern.

Gruss
Gast #2229565
Lesenswert?

Alex schrieb:
> Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com
> (diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.
>
> mein Problem ist jetzt die Umrechnung.
Wenn du jetzt bei einer zweiten Temperatur die Werte ausliest, kennst du 
schon mal den Skalierungsfaktor und dann sollte der Achsenabschnitt auch 
rauszukriegen/bestätigen sein
Gast #2229579
Lesenswert?

Alex schrieb:

> rprintfdec((can_buff[3]-100)/2);

Suche und poste die Funktion doch mal hier her. Da, wo du sie gelesen 
hast, ob es Sourcecode war, da muß sie sich doch auch drinnen befinden.

Befindet sie sich nicht mehr im Code, ist es gerade mal unwichtig.
Gast #2229594
Lesenswert?

Im Anhang gerade gemachter Screenshot.
In Hintergrund sieht man die richtig ausgelesene Wassertemp.
Im vorderen Fenster unter Filter Messages ist die Nachricht mit der ID 
420 und der Inhalt.
Wer kann da sie Logik finden?

Ach ja, zum Vergleich:
Als die Ausgelesene Temperatur 81°C war, stand bei Byte 5 (wo gerade 78 
steht) AA.

Sieht da Jemand den Zusammenhang?

Danke
Gruss Alex
Angehängte Dateien:
Gast #2229617
Lesenswert?

DANKE für die Hilfe!
>Zu deinen 78h fehlt die entsprechende Temperatur.
Steht im Hindergrundfenster rechts.

>Könnte hinkommen mit CAN-Byte*0,75 - 48
Nah dran, passt aber nicht ganz.


Wie rechnet man sowas aus?

Gruss Alex
Gast #2229652
Lesenswert?

>delta y / delta x, dann das absolute Glied.

Schule ist schon leider lange her.
Damit ich nicht faul aussehe mache ich mal eine Rechnung:
ALLE WERTE SIND AUSGEDACHT! Ich will nur die Richtigkeit der Rechnung 
wissen.

28h  sind  10°C
C8h  sind  90°C

delta y / delta x
( C8h - 28h ) / ( 90 - 10 )
A0 / 80
Ergibt 2

Und wie gehts weiter?
Sorry für die Dämlichkeit. Habe es echt vergessen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren