Forum: Mikrocontroller und Digitale Elektronik CAN-Nachrichten auswerten


von Toby M. (toby_sx)


Lesenswert?

Hallo,

ich würde gerne möglichst effizient CAN Nachrichten auswerten. Diese 
bestehen immer aus 1..8 zusammenhängenden Bytes. Beispielsweise kann ein 
Signal bei bit 2 starten und 10bit lang sein. Ich wollte nun 
schrittweise immer zwei Byte (damit maximal 16Bit breite Worte) mit 
einem Short-Zeiger auswählen und dann mit entsprechender Maskierung 
verUNDen. Leider lässte der kompiler die conversion von char* zu short 
int* nicht zu.

Folgendes wollte ich also tun:

short * block;
char msg[]="ABCDEFG";

/*lenght soll die länge meine wortes in bit angeben, starbit ist 
selbsterklärend*/

block = &msg; // also damit sollte der short auf das untere Byte zeigen
block = block & ((short)(pow(2,length) << startbit));

nun sollte eigentlich meine nachrichtig fertig maskiert in block stehen, 
sodass ich diese nur wieder um startbit in die gegenrichtung shiften 
müsste.

gibt es vielleicht eine elegantere lösung, um aus einem 2er Byteblock 
einen beliebig langen (max16) bitblock zu lesen?

grüße und danke für ideen,
toby

von Peter D. (peda)


Lesenswert?

Schonmal die Überschrift dieses Unterforums gelesen:

Wenn ihr eigene Programme oder Anleitungen geschrieben habt könnt ihr 
sie hier posten. Fragen werden gelöscht!


Peter

von Toby M. (toby_sx)


Lesenswert?

alles klar, locker bleiben. die andere rubrik ist ja auch nicht 
eineindeutig!

gruß,
toby

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.