
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> 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 |