Zeilenvorschub < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:38 Do 06.03.2008 | Autor: | votec |
Aufgabe | Ich habe ein Programm das in einer Schleife mehrere Tausend mal binäre Eingänge ausliest.
Mein Problem ist es das ich nicht eine ewig lange Datei haben will sondern immer die aktuellen Erg. auf dem Bildschirm sehen. |
Also mein Programm ist in c++ geschrieben es soll binäre eingänge einer Steuerung abfragen mit einem Request und Response befehl. Diese Abfrage läuft natürlich in ms vielleicht sogar in mikro sek. ab. Dieser "Haufen" an Informationen läuft bei mir den Bildschirm runter und verursacht eine sehr große Unübersichtlichkeit.
Nun ich habe mehrere Methoden Funktionen Strukturen und klassen und bräuchte einen Tipp wie die Ausgaben all dieser "Bauteile" immer wieder aktualisiert auf der gleichen stelle also am Anfang der datei stehen bleiben...???
Vielen Dankk schon ml im vorraus...
gruß
|
|
|
|
Hallo votec,
Du könntest nach jeder Ausgabe deiner Daten (mit printf nehme ich an?) einen system()-Aufruf machen.
Z.B. gibt folgendes "Quick&Dirty"-Programm Zahlen von 0 bis 10000 in der gleichen Zeile aus:
1: |
| 2: | #include <stdio.h>
| 3: | #include <stdlib.h>
| 4: |
| 5: | int main ()
| 6: | {
| 7: | int i;
| 8: | for(i=0;i<=10000;i++){
| 9: | printf("%d\n",i);system("clear");}
| 10: |
| 11: | return 0;
| 12: | }
|
Die Nachteile hierbei sind:
- Das Programm kann während der Ausführung nicht mit Strg+C unterbrochen werden, wie mir scheint.
- Der Bildschirm flackert stark, während die Ausgabe läuft.
Für den Fall das du ein *nix-Derivat als OS benutzt, könntest du dir noch die ncurses-Bibliothek anschauen. Dort hat man viel mehr Kontrolle über ein Terminal.
Viele Grüße
Karl
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 07:50 Fr 07.03.2008 | Autor: | votec |
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Aufgabe | Sieht schon mal sehr gut aus....vielen Dank!!!
Das Problem wird nur sein das ich mit c++ arbeite ich könnte zwar die stdio einbinden aber da es einige func. nur in c++ gibt und das Programm so verzweigt ist....?!?!?!?
Hast du schon mal vom \r ->Wagenvorscchub gehört? |
for( int i= 0; i <data.rmr_resp.byte_count / 2; i++) {
os << "dword[" << std::dec << i << "] = " << std::hex << std::setw(4)
<< ntohs(data.rmr_resp.reg[i]) << " bin: ";
dumpw( os, ntohs(data.rmr_resp.reg[i]));
Hier ein kleiner Ausschnitt meines Programms. die "bin:" dort wird eine 2Byte lange Zahl stehen die in einer unterfunktion berechnet wird....am liebsten würde ich wenn das irgendwie geht hinter jede Ausgabe meines programms das \r Steuerzeichen stellen das genau die nächste Ausgabe wieder in der Zeile nur vorne anfängt. Hatte ich probiert er gibt mir halt mit dem Befehl siezof nur den Interger Wert....zurück. ich bräuchte eine Hilfe die genau mir die Zeile wieder gibt und am Anfang anfangen lässt.
Natürlich die aktualisierte Zeile....mhm ne Idee ?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 08:20 So 09.03.2008 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|