Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: funktioniert nicht so ganz Kategorie: Programmierung Basic (von Henrik, Homepage - 25.02.2005 16:15)
 Als Antwort auf funktioniert nicht so ganz von Steffen - 25.02.2005 15:57

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

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
PRINT
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
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
PRINT "Der User ist eingeschlafen, ich mache mal weiter"
EXIT FUNCTION

#abbruch
abbruchflag = ON
PRINT
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

Bisherige Antworten:

Re: funktioniert nicht so ganz (von Steffen - 25.02.2005 17:01)