Hallo Hier mein Code Print "Programm Anfang" Lcd: A = Right(a , 9) A = Left(a , 1) Cls Lcd A Wait 2 A = "" Onrxd: A = A + Chr(udr) If Len(a) > 10 Then Goto Lcd End If Return End funktionieren tut er (habe das Ganze konfigurationsgefozzel obendran weggelassen!) doch wie stelle ich es an, dass das Programm nur einmal den Befehl "Print "Programm Anfang" ausführt? Liebe Grüsse
Was macht der Return da drinnen? Bau dein Programm grundsätzlich so auf, dass du eine Schleife hast, die immer ausgeführt wird. In dieser Schleife erledigst du deine Logik
>Der Return führt wieder aus dem interrupt hinaus
Das weiß dein goto schon zu verhindern ;)
Aus welchem Interrupt? In dem von dir geposteten Code sieht man keinen Interrupt Und Gesetz dem Fall dass OnRxd die Interrupt FUnktion ist, dann solltest du tunlichst vermeiden aus diesem mittels einem goto auszusteigen. Du solltest goto überhaupt vermeiden, wenn es geht. Dein Hauptprogramm sollte eine einzige Schleife bilden!
Wenn ich den return rausnehme bekomm ich aber ne Fehlermeldung... Der Interrupt "Onrxd", der was von der UART empfängt, oder nicht?^^
Bascomania schrieb: > Wenn ich den return rausnehme bekomm ich aber ne Fehlermeldung... nämlich? > Der Interrupt "Onrxd", der was von der UART empfängt, oder nicht?^^ Das kann ich aber von hier aus mit meiner Glaskugel nicht sehen :-)
Schau dir doch einmal andere BASCOM Programm an. Die sind immer alle nach einem Muster aufgebaut
1 | ' Configuration |
2 | |
3 | ' Einstellungen und Einmalaktionen |
4 | |
5 | do |
6 | ' Logik des Programms |
7 | loop |
8 | end |
9 | |
10 | ' unterprogramme sub-endsub |
11 | |
12 | ' Interrupt handler |
13 | Onxxx: |
14 | ' was ist beim Interrupt zu tun |
15 | return |
Ich bekomme die Fehlermeldung "Interrupt needs Return" Ja, es empfängt den String denn es geht;) Okay, hab jetzt mal Do-Loop eingefügt (nach dem Print Befehl), mein Problem: der Print-Befehl wird immer noch tausendemale ausgeführt;)
vielleicht so: Print "Programm Anfang" do 'Hauptschleife, nichts tun nur auf Int. warten loop Lcd: A = Right(a , 9) A = Left(a , 1) Cls Lcd A Wait 2 A = "" Return Onrxd: A = A + Chr(udr) If Len(a) > 10 Then Gosub Lcd End If Return End
Positiv Danke UWE:D ich schau trotzdem nochmal später rein...;)
Doch noch n'Problem: Nachdem der Bearbeitete String aufm LCD angezeigt wurde startet mein Programm neu, das heisst der Pront Befehl wird nochmal ausgeführt :S Wieso das, gibt für mich überhaupt keinen SInn...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.