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 Jo - 4.12.2010 9:15)
Als Antwort auf Re: Limitierung bei Str_Printf() ??? von Joerg - 19.11.2010 8:20

> > > > 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

Hallo Peter,
ich möchte die Frage gerne noch an dich stellen, ob es eine Begrenzung der Args. bei Str_Printf()
besteht. Mir ist klar, dass dein Hauptthema z.Z. wohl eher der Interpreterabsturz bei grö�eren
Programmen ist, wenn du aber mal ne min. Zeit hast, wäre es super wenn du eine Antwort geben
Könntest.
Danke und Grü�e

Jo


    Antwort schreiben


Antworten:

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)