Re: Limitierung bei Str_Printf() ??? Kategorie: Programmierung C (von Jo - 7.12.2010 8:15) | |
Als Antwort auf Re: Limitierung bei Str_Printf() ??? von PeterS - 6.12.2010 19:58
| |
> > > > > > 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 > > > > > > > > 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 > > Nein, es gibt keine Limitierung. Ich habe am Wochenende einen Fehler gefunden, der den > Formatierungsstring abgeschnitten hat. Der Bug ist gefixed. > > Gruss Peter Danke Peter für die Antwort und den fix :-) | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum