- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: input with non Blocking

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.08.2005
    Beiträge
    11

    input with non Blocking

    Anzeige

    E-Bike
    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

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2005
    Beiträge
    23
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2005
    Beiträge
    23
    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

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    13.08.2005
    Beiträge
    11
    ä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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2005
    Beiträge
    23
    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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    13.08.2005
    Beiträge
    11
    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

    Code:
    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
    so das er hier solange immer wieder die selbe routine mit "all" anstellt bis sich "all" ändert

    der aufbau oben ist nur schematisch und legt kein wert auf funktionstüchtigkeit

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    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

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    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

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    13.08.2005
    Beiträge
    11
    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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    13.08.2005
    Beiträge
    11
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test