2016-11-06 4 views
-1

hallo an alle ich habe dieses Problem, das ich eine Reihe von uint8_t habenArray von uint8_t und Daten anhängen

uint8_t command_Text[256]

ich einige Daten aus adc lesen, ich benutze snprintf für wandeln die Daten Schwimmer in uint8_t

` float aux; 
uint8_t value[4]; 
aux=(float)(HAL_ADC_GetValue(&hadc)) 
snprintf(value,4,"%.0f",aux); //convert the data float to uint8_t 
strcat(command_Text, value); //append data ` 

ich sehe diese Warnung Argument vom Typ „uint8_t *“ ist unvereinbar mit Parameter vom Typ „char const * ich weiß nicht, manipolate die Zeichenfolge in uint_8 Daten, ich möchte Daten e lesen sie es in Array anhängen Kannst du mir helfen?

+0

snprintf nimmt einen "char *" Parameter nicht "unsigned char *" – OldProgrammer

+2

declare 'value' als' char [4]; ' – selbie

+2

Das slike für einige Embedded-Gerät suchen . Die erste Regel ist es nicht zu verwenden, wo der Punkt zu vermeiden vermeidbar ist. Da Ihr ADC höchstwahrscheinlich kein Gleitkommaergebnis liefert, sind die Chancen ziemlich gut, dass Sie Integer für den Rest Ihres Codes verwenden können, wobei Sie möglicherweise Bruch- oder Festkommaarithmetik emulieren. Gesagt, dass Sie die 'printf'- und' scanf'-Familie auch nicht verwenden sollten, da sie Code-Bloat sind. – Olaf

Antwort

0

vorschlagen so etwas wie:

uint8_t command_Text[256] = {'\0'}; 
.... 
uint8_t value[4] = {'\0'}; 
snprintf(value,3,"%3.3u", atoi(HAL_ADC_GetValue(&hadc))); 
strcat(command_Text, value); //append data 
+0

Wer diese Antwort jemals gewählt hat, bitte posten Sie einen Kommentar, warum der Downvote. – user3629249