PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Strings in Array packen?



guenter1604
01.10.2010, 22:21
Hallo Forum,

in 6ms Abständen sollen unterschiedliche Strings versendet werden:


sprintf( Text, "2:1=%i\r\n", (int)tilt_angle );
uart_puts (Text);
_delay_ms(6);
sprintf( Text, "2:2=%i\r\n", (int)roll_angle);
uart_puts (Text);
_delay_ms(6);
sprintf( Text, "2:3=%i\r\n", (int)Rocker_position);
uart_puts (Text);
_delay_ms(6);
sprintf( Text, "2:4=%i\r\n", (int)Rocker_sensivity);
uart_puts (Text);
_delay_ms(6);
sprintf( Text, "2:5=%i\r\n", (int)Speed_error);

wie würdet ihr das hübsch "verpacken"? struct?


Günter

Felix G
02.10.2010, 00:12
Wenn das alles int-Variablen sind, wie wärs dann damit:


enum
{
tilt_angle,
roll_angle,
Rocker_position,
Rocker_sensivity,
Speed_error,
Value_max
};

int Values[Value_max];

int8_t n;

for(n=0; n<Value_max; n++)
{
sprintf(Text, "2:%i=%i", n+1, Values[n]);
_delay_ms(6);
}

So kannst du anderswo im Code z.B. auch per Values[Speed_error] auf ein bestimmtes Element (in diesem Fall Speed_error) mit seinem Namen zugreifen.

guenter1604
02.10.2010, 09:58
Hallo Felix,

leider sind die Typen der Werte unterschiedlich, deshalb auch das (int) vor den Variablen.

Günter

TobiKa
02.10.2010, 10:14
Ich würde wohl ein struct nehmen, obwohl es dadurch auch nicht kürzer wird.

Außer du machst ne Funktion draus und übergibst einfach das komplette struct.