PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CAN-Software frage



someone80
07.12.2007, 12:44
hi all,
ich habe eine leichte frage für CAN-Experten.
in meiner software handelt es um nachrichten zu empfangen,3 hintereinander Messages werde ich empfangen,die speichere ich in einem Buffer mit 3 arrays,je 32 bit, meiner Daten werden aufgeteilt in 32 bit Array, diese Daten will ich einen anderen Daten format geben,kann mir jemand helfen wie kann ich meine Daten weiterverarbeiten, ich habe was einiges überlegt,dass ich jede einzelne Byte in einem Array speichere und mit einer converttoint() funktion konvertire ich jedes mal 2 bytes.
aber ob ich recht habe in einer funktion auf einen globalen Variable zugreifen???
ich danke euch für Ihre Mühe die zur eine Lösung bringt.!!!

robodriver
07.12.2007, 12:51
Hm, geht es nur mir so oder habt ihr auch schwierigkeiten die Sätze zu verstehen?

Also soweit wie ich es "entschlüsselt" habe:
Du bekommst drei 32Bit-Werte die in einem Array gespeichert werden.
Nun willst du die Daten in ein anderes Format bringen und weißt nicht wie das geht?
Dafür wäre es zunächt gut zu wissen um welche Programmiersprache es sich handelt und in welches Format du die Daten bringen möchtest.

Gruß Robodriver

someone80
07.12.2007, 13:00
hi Robodriver,
ich bekomme 3 messages,jeweils 8 byte Daten.
ich teile ein Message in 4 Bytes Daten auf, wegen 32 bit µC ARM7.
8 Bytes= 4 Bytes data + 4 Bytes data.
diese 4 Bytes data enthält 2 Integer Werte, die ich in einem Integerformat umwandeln will,das gilt für alle Messages.
die Programmiersprache ist C

T.J.
07.12.2007, 19:46
@robodriver: ja, muss man wach sein für!

also es geht darum ein 4 Byte INT wert umzuwandeln? oder binär to int?

und was genau suchst du? ein codebeispiel?

Arkaiden
10.10.2008, 11:37
Edit: ok langsam komm ich dahinter was du meinen könntest =)
@robodriver
einfach den array wert in deine int veriable reinschreiben.

unsigned int intwert = 0;
intwert = (DeinArray[0] & (DeinArray[1] << 8 ));

Das schreibt die beiden ersten (0 und 1) werte deines array in EINE integer Variable, wobei position 1 die vorderen 8 Bit sind und position 0 die hinteren.


ich glaub aber ich versteh deinen Post nicht =)