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: Neues von der RS232 Kategorie: C-Control I V1.2/2.0 (von Henrik, Homepage - 30.11.2004 15:03)
 Als Antwort auf Neues von der RS232 von ReinhardB - 30.11.2004 13:41

> Aber nicht wieder aufhören !
> Egal ob ich das Proggie mit "end" beende oder resette, es lässt sich nicht mehr neu starten!
> Alles wieder neu aufspielen und von vorne...

Hmm... an Deinem Beispiel kann ich formal keinen Fehler entdecken. Es sollte nach dem ersten empfangenen Byte dieses auf dem LCD ausgeben, dann Ende anzeigen und das war's.

Mir selbst (und Anderen) ist allerdings manchmal ähnliches passiert, wenn ich nit meiner Terminalroutine gewurschtelt habe. Mit ESC-Sequenzen lässt sich das gut provozieren. Danach geht dann überhaupt nichts mehr und das Programm muss neu aufgespielt werden, bisweilen sogar die M-Unit für ein paar Sekunden von der Versorgungsspannung getrennt werden, damit das überhaupt erst möglich wird,

> Warum schaltet das Programm nicht vernünftig ab, solange der Sender sendet ?
> Bei der Main-Unit 1 war das kein Problem !

Es sieht so aus, als wären die i/o Betriebssystemroutinen noch verwanztzer als bereits bekannt (verschlucktes erstes PUT).

Im nachfolgenden eine Pseudoterminalroutine in Basic++ die nun funktioniert, solange ich keine direkten Steuerzeichen über die Tastatur eingebe. Deklarationen und Funktionen habe ich weggelassen, es soll nur das Prinzip verdeutlicht werden.

Grüße
Henrik


#terminal

row  = 1
line = 1
lcd.clear
lcd_cursor_on()

#terminal1

if rxd then
 lcd.off
 get data
 'Abfragen für cursor left. right, up, down etc. einfügen oder
 'sonstige Steuerfunktionen berücksichtigen .............z.B.:

 if data = 5 then                   'ctrl e = Ende
   lcd.init switchonly
   lcd_cursor_off()
   goto menue2
 end if

 if data = 12 then                  'ctrl l = Cursor links
   lcd.init switchonly
   row = row - 1
   lcd_locate(line,row)
   goto terminalend
 end if

 if data = 18 then                  'ctrl r = Cursor rechts
   lcd.init switchonly
   row = row + 1
   lcd_locate(line,row)
   goto terminalend
 end if

 if data = 3 then                  'ctrl c = Clear Display
   lcd.init switchonly
   line = 1
   row  = 1
   lcd.clear
   goto terminalend
 end if

 lcd.init switchonly

 put data
 row = row + 1

 if row > 16 then
  row = 1
  line = line + 1
 end if
 if line > 4 then
     line = 1
     row = 1
 end if
 lcd_locate(line,row)

end if

#terminalend
if keyboard = 0 then
 lcd_cursor_off()
 goto menue2
end if

goto terminal1


Meine Homepage: http://www.henrik-reimers.de/control/

 Antwort schreiben

Bisherige Antworten:

Re: Neues von der RS232 (von ReinhardB - 30.11.2004 15:56)