Hallo, ich möchte über ein Funkkanal messwerte übertragen. Durch die API sind nur arrays mit unsigned char versendbar. Allerdings liegen meine Daten als Integer vor. der Mikrokontroller ist der MSP430BT5190. Ich komme da nicht weiter. Ich würde gerne mein int Array in Hexdezimal umwandeln, nur weiß ich nicht wie. Dierekt das array als Hex z erzeugen ist blöde. Hat jemand ein tip?
Wieso hex? Ein 16 Bit Wert lässt sich doch einfach nach 2 mal 8 Bit aufteilen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Gast
#2468313
Um die Schieberei zu vermeiden, könnte man eine union verwenden, so dass das integer array und ein unsigned char array auf identischen Speicherstellen liegen
Gast
#2468366
Ein Array aus chars wird doch sowieso als Pointer übergeben. Da steht doch als weiterer Parameter bestimmt noch die Anzahl der zu übertragenden Bytes, oder? Dann einfach einen Pointer auf deinen int übergeben und die Größe des ints in Byte. Natürlich casten, um Compiler-Warnungen zu vermeiden. Fertig ist die Laube.
vielen dank an alle! die stichworte Pointer, Arrac, Char, Integer haben ausgereicht ... pseudocode: *(chararray + x) = intwert;
Gast
#2470127
Da mußt Du aufpassen, daß Dein Pointer immer gerade Adressen enthält. Wenn man beim MSP versucht, ein 16-Bit-Wert (oder größer) auf eine ungerade Adresse zu schreiben, gibt's einen Adress-Error-Trap. Besser das int als zwei char reinschreiben und dabei Little/Big Endian berücksichtigen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.