meinst du das so ? die 13 kannst du durch jeden anderen tastaturcode ersetzten
$regfile = "m8def.dat"
Dim A As Byte
Do
A = Inkey()
If A = 13 Then Exit Do
Loop
Print "Enter getrückt"
End
hi
ich möchte ein while schleife nutzen um so lange eine routine auszuführen bis eine eingabe erfolgt.
da das gewöhnliche "input var" auf eine "enter" wartet bis es das programm wieter laufen lässt ist es nicht geeignet.
gibt es einen alternativen befehle oder eine einstellung das der input non blocking nutzt ?
wäre für jede hilfe dankbar
grüße
The Maverick
meinst du das so ? die 13 kannst du durch jeden anderen tastaturcode ersetzten
$regfile = "m8def.dat"
Dim A As Byte
Do
A = Inkey()
If A = 13 Then Exit Do
Loop
Print "Enter getrückt"
End
oder auch so
$regfile = "m8def.dat"
Dim A As Byte
Do
A = Inkey()
If A = 65 Then Exit Do
Loop
If A = 65 Then Print "Taste GROß A gedrückt"
End
ähm nein .. ich übergebe über den serial port einen string und es soll eben immer wieder geprüft werden ob da was ankommt und wenn nicht soll die while schleife weiterlaufen bis eben waskommt
also egal auf welche taste ...er soll auf jede reagieren ...also so
Dim A As Byte
Schleife:
Do
A = Inkey()
If A > 0 Then Exit Do
Loop
Print "Taste " ; A ; " wurde getrückt"
Goto Schleife
End
wieso taste ?
entweder steh ich auf der leitung oder ihr versteht mich falsch
also ich hab einen computer mittels RS232 an einem atmel AVR mega 32
über ein programm kann ich NUR STRINGS an den serial port geben und der kommt dann wiederrum an den avr.
bisher funzt mein programm so
Code:do input all if all = "000" then //nix else //hier tut er was damit end if loop
jetzt möchte ich das umstellen auf in etwa
so das er hier solange immer wieder die selbe routine mit "all" anstellt bis sich "all" ändertCode:dim all as string *256 dim oldall as string * 256 do input all while all = oldall then //hier was mit "all" tun oldall = all wend loop
der aufbau oben ist nur schematisch und legt kein wert auf funktionstüchtigkeit
Hallo,
ich fürchte, Du wurdest missverstanden. Schau mal in der Hilfe nach ISCHRWAITING(). Damit solltest Du das erreichen, was Du möchtest.
Grüße
Henrik
Hi,
kannst auch "Timeout" verwenden.
Dann fliegt er nach einer einstellbaren Zeit aus der Input Routine raus, wenn nix kommt.
Ist aber nicht sehr elegant.
Gruß
Christopher
danke jungs ... jetzt hab ichs hinbekommen .. mit dem ischarwaiting()
aber es funzt noch net so sauber wie ich mir das gewünscht hätte .. der pc sendet die zahlenreihen schneller als der AVR sie verarbeiten kann ...
gibts ne möglichkeit dem inkey oder waitkey zu sagen er soll alle zeichen und nicht nur eins einlesen
ich würde dann vordefinieren 3 zeichen und das ischarwaiting solle auch die schleife erst abbrechen wenn 3 angekommen sind un nicht nur eins
The Maverick
ah ich hab mal die fürs bugfixing wichtigen print befehle raus genommen
das hat wohl soviel rechenzeit in anspruch genommen das es nicht flüssig ging.
jetzt kommt er auch mit langen zahlen reihen über den seriellen port problemlos klar
danke an alle für eure Tips
The Maverick
Lesezeichen