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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.