Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Limitierung bei Str_Printf() ??? Kategorie: Programmierung C (von Joerg - 19.11.2010 8:20)
Als Antwort auf Re: Limitierung bei Str_Printf() ??? von jo - 19.11.2010 7:56
Ich nutze:
C-Control Pro Mega128
> > > Hallo,
> > > ich möchte über Printf Arraywerte über RS232 ausgeben.
> > >
> > > Das Codefragment zum reproduzieren sieht so aus: Mit in Summe 20 Argumenten OK,
> > > ab 21 Argumenten wird alles ab 20 ignoriert
> > >
> > > for(i=0;i<48;i++){mkmh[i]=i;}
> > > Serial_WriteText(COM1,"18%xn");
> > > Str_Printf(send_str,"%sH%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.
> > > %04x.%04x.%04x.%04x.%04x.%04x.%04x.%s","msg_start",
> > > mkmh[0],mkmh[1],mkmh[2],mkmh[3],mkmh[4],mkmh[5],mkmh[6],mkmh[7],mkmh[8],mkmh[9],
> > > mkmh[10],mkmh[11],mkmh[12],mkmh[13],mkmh[14],mkmh[15],
> > > mkmh[16],mkmh[17],
> > > "msg_end");
> > > Msg_WriteText(send_str);
> > > Serial_WriteText(COM1,send_str);
> > >
> >
> > Hallo Jo,
> >
> > gibt es einen Grund, weshalb Du das Str_Printf nicht in einer Schleife benutzt?
> >
> > Grü�e Joerg
> Hallo Jörg,
> ja, 2 Gründe.
> a) Im Beispiele hier ist is ein Array, in real sind es verschiedene Var.

Kann man verschiedenen Vars nicht in ein Array legen?

> b) ich brauche die Daten in einem String; ein Str_Copy( x, y, 0xFFFF)  in einer Schleife um  den
> String zusammenzubasteln ist laufzeittechnisch zu langsam.
> Viele Grü�e Jo

>

Bist Du dir mit der Laufzeit sicher?

Ich habe schon bei etlichen Konstrukten die Zeit gemessen und es war oftmals anders als
ich erwartet hätte. Gerade wenn man Serial_WriteText mit niedrigen Baudraten benutzt,
wird die meiste Zeit beim schreiben der seriellen Daten verbraucht und nicht beim formatieren.
Ich würde das ganze mit einem Array machen und die kurzen Strings einzeln senden.
Bei der Adressierung des  Arrays würde ich Konstanten verwenden,
die den Namen der Variablen entsprechen (enums gibt es ja leider nicht).

Grü�e Jörg


> >
> > > Serial_WriteText(COM1,"19%xn");
> > > Str_Printf(send_str,"%sH%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.
> > > %04x.%04x.%04x.%04x.%04x.%04x.%04x.%04x.%s","msg_start",
> > > mkmh[0],mkmh[1],mkmh[2],mkmh[3],mkmh[4],mkmh[5],mkmh[6],mkmh[7],mkmh[8],mkmh[9],
> > > mkmh[10],mkmh[11],mkmh[12],mkmh[13],mkmh[14],mkmh[15],
> > > mkmh[16],mkmh[17],mkmh[18],
> > > "msg_end");
> > > Msg_WriteText(send_str);
> > > Serial_WriteText(COM1,send_str);
> > >
> > >
> > > hier die Ausgabe
> > >
> > > msg_startH0000.0001.0002.0003.0004.0005.0006.0007.0008.0009.000A.000B.000C.000D.000E.
> > > #000F.0010.0011.msg_end
> > > msg_startH0000.0001.0002.0003.0004.0005.0006.0007.0008.0009.000A.000B.000C.000D.000E.
> > > 000F.0010.0011.0012
> > >
> > > Nun die 100$ Frage: Gibt es in der Implementierung von Str_Printf eine Limitierung?
> > >
> > > Viele Grü�e
> > >
> > > Jo


    Antwort schreiben


Antworten:

Re: Limitierung bei Str_Printf() ??? (von Jo - 4.12.2010 9:15)
    Re: Limitierung bei Str_Printf() ??? (von PeterS - 6.12.2010 19:58)
        Re: Limitierung bei Str_Printf() ??? (von Jo - 7.12.2010 8:15)
    Re: Limitierung bei Str_Printf() ??? (von Torsten - 4.12.2010 11:00)