CAN Botschaft erstellen

OP #5456239
Lesenswert?

Hallo zusammen,

vielleicht stelle ich mich echt nur blöd an, aber ich weiß nicht weiter.

Ich will eine Drehzahl, die in einer uint16_t Variablen gespeichert ist 
in eine CAN-Nachricht verpacken und senden.
Bsp: Die Drehzahl sei 1470 rpm, was hexadezimal 0x5BE entspricht.

Jetzt weiß ich nicht, wie ich es funktioniert, dass ich zunächst mal den 
HEXwert bekomme.
Die nächste Schwierigkeit ist, dass BE im ersten Byte und 05 im zweiten 
Byte stehen soll.

Grüße

1
message.id = 0x631; //formatted in HEX
2
message.header.rtr = 0;
3
message.header.length = 2; //formatted in DEC
4
        
5
message.data[0] = 0xBE;
6
message.data[1] = 0x05;
#5456649
Lesenswert?

Michael H. schrieb:
> Ich will eine Drehzahl, die in einer uint16_t Variablen gespeichert ist
> in eine CAN-Nachricht verpacken und senden.
> Bsp: Die Drehzahl sei 1470 rpm, was hexadezimal 0x5BE entspricht.
>
> Jetzt weiß ich nicht, wie ich es funktioniert, dass ich zunächst mal den
> HEXwert bekomme.

Der Wert ist einfach nur eine Zahl. Hex ist eine Darstellungsform.

> Die nächste Schwierigkeit ist, dass BE im ersten Byte und 05 im zweiten
> Byte stehen soll.

Siehe Bitmanipulation.

> message.id = 0x631; //formatted in HEX

"formatted in HEX" ist das nur im Quellcode. Dem Prozessor ist völlig 
wurscht, ob du das dort in dezimal oder in hexadezimal angegeben hast.

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