
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Also ich habe es jetzt so mehr oder weniger am Laufen. Allerdings ist es so, dass sobald einmal ein Befehl vom PC übertragen wurde, die C-Control wieder dauerhaft wartet bis ein input kommt Wenn Du erst mal in der Input-Schleife bist, kommst Du ohne Eingabe nicht mehr raus. Warum liest Du denn nicht da nach, wo das Thema bereits besprochen wurde? Den Link habe ich doch bereits gepostet. Da steht sicherlich einiges drin was Du nicht brauchst, aber was Du brauchst, läßt sich dem Beispiel entnehmen. Also gut, Special Service: ------- zitat ----- Weil es von allgemeinem Interesse sein könnte, habe ich mir mal die Mühe gemacht, eine lauffähige Demo für die Lösung eines solchen Problems zu schreiben. Das ist ein Mittelweg zwischen Achims GET Ansatz und Input. Achims Ansatz hat den kleinen Schönheitsfehler, daß sich beim holen der Werte "on the fly" Ausgaben und Zwischen- abfragen eher schlecht verwirklichen lassen, Input den Nachteil, daß das Programm auch nach dem Tod des Bedieners noch auf eine Eingabe wartet. Daher diese (in Basic++ programmierte,sorry) Demo mit dem angesprochenen Timeout. Das ist weit von gutem Programmieren entfernt, aber in Anbetracht der frühen oder späten Stunde (nur eine Frage des Blickwinkels) das beste was ich jetzt noch zustande bringe. Es läuft aber so wie es soll, verzichtet auf jeden Schnörkel, den Import von Libraries und kann genau so kompiliert und an die CC übertragen werden. Also Basic++ schnappen, copy und paste, ausprobieren und Stück für Stück den eigenen Erfordernissen anpassen. '------------------------------------------------------------------- ' --- Beispiel einer Terminal Tastatureingabe für Basic++ mit ---- ' --- timeout (2stelliger Wert) --------------------------------- 'Das Programm und die Funktion haben lediglich demonstrativen Wert. 'In der Praxis müssten noch Sicherheitsabfrage auf den gültigen 'Wertebereich eingefügt werden und so weiter.... '------------------------------------------------------------------- DEFINE value AS BYTE DEFINE temp AS BYTE DEFINE spplatz_temp AS BYTE DEFINE spplatz1 AS BYTE DEFINE spplatz2 AS BYTE DEFINE spplatz3 AS BYTE DEFINE timeoutflag AS BIT DEFINE abbruchflag AS BIT DECLARE FUNCTION GET_Sp_Wert() '------------------------------------------------------------------- abbruchflag = OFF timeoutflag = OFF PRINT "Starte Programm" #start IF RXD THEN GET_Sp_Wert() ELSE GOTO start IF abbruchflag THEN GOTO fertig IF timeoutflag THEN GOTO fertig 'Achtung! Bei vielen \"Speicherplätzen\" wäre das folgende Konstrukt 'nicht sinnvoll. Dann sollte eine Case oder On Goto Konstruktion 'eingesetzt werden. IF spplatz_temp = 1 THEN spplatz1=value IF spplatz_temp = 2 THEN spplatz2=value IF spplatz_temp = 3 THEN spplatz3=value #fertig PRINT "Aktuelle Werte der Speicherplätze:" PRINT spplatz1 PRINT spplatz2 PRINT spplatz3 GOTO start END '------------------------------------------------------------------- FUNCTION GET_Sp_Wert() GET value 'Puffer leeren PRINT "Speicherplatz eingeben (von 1 bis 3)..." TIMER = 0 'Speicherplatz angeben #lp1 IF TIMER > 500 THEN GOTO timeout IF NOT RXD THEN GOTO lp1 GET value PRINT "Gewählter Speicherplatz: "; PUT value spplatz_temp = value - 30h PRINT "2stelligen Wert eingeben: "; '2-stellige Zahl in value holen TIMER = 0 #lp2 IF TIMER > 500 THEN GOTO timeout IF NOT RXD THEN GOTO lp2 GET value PUT value temp = (value-30h)*10 TIMER = 0 #lp3 IF TIMER > 500 THEN GOTO timeout IF NOT RXD THEN GOTO lp3 GET value PUT value value = value-30h temp = temp + value PRINT "OK? Dann Enter" PRINT "Abruch mit jeder anderen Taste" TIMER = 0 #lp4 IF TIMER > 500 THEN GOTO timeout IF NOT RXD THEN GOTO lp4 GET value IF value <> 0Dh THEN GOTO abbruch GOTO fertig_sp #timeout timeoutflag = ON PRINT "Der User ist eingeschlafen, ich mache mal weiter" EXIT FUNCTION #abbruch abbruchflag = ON PRINT "Eingabe abgebrochen" EXIT FUNCTION #fertig_sp timeoutflag = OFF abbruchflag = OFF value = temp END FUNCTION Henrik Meine Homepage: http://www.henrik-reimers.de/control/ |
| Antwort schreiben |