Shop OBEX P1 Docs P2 Docs Learn Events
slow keyboard response — Parallax Forums

slow keyboard response

krazyideaskrazyideas Posts: 119
edited 2008-10-13 14:05 in Propeller 1
I am using the keyboard to tweak things in my progam but the keyboard respons slowly??
How could I speed it up.

I am calling the newkey object from the keyboard program in the library.
Thanks

·

Comments

  • tpw_mantpw_man Posts: 276
    edited 2008-10-12 00:58
    I think you want to use getkey, as newkey clears the key buffer and then waits for a keypress. Getkey just gets the most recent key, waiting if there is none. Please read the source of the Keyboard object as it contains useful information.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I am 1011, so be surprised!


    Advertisement sponsored by dfletch:
    Come and join us on the Propeller IRC channel for fast and easy help!
    Channel: #propeller
    Server: irc.freenode.net or freenode.net
    If you don't want to bother installing an IRC client, use Mibbit. www.mibbit.com
    tongue.gif
  • Mike GreenMike Green Posts: 23,101
    edited 2008-10-12 01:00
    The newkey routine in the keyboard driver is quite fast. It will supply characters as fast as it receives them. There may be something else in your program that's slowing it down. You'd need to post your program as an attachment to a message in order to get more specific help.

    If your program takes a while to get back to the newkey routine, that would be the limiting factor since the keyboard driver can't save up typed characters (since newkey clears them out).

    Post Edited (Mike Green) : 10/12/2008 1:05:53 AM GMT
  • krazyideaskrazyideas Posts: 119
    edited 2008-10-13 13:51
    Ok wells here is the progam that I have that is giving me a slow reponse.· What I gathered from the responses I have gotten is that the reason it respons so slowly is the leagth of the program.

    But here it is

    Thanks



    CON

    ······· _clkmode······· = xtal1 + pll16x
    ······· _xinfreq······· = 5_000_000


    OBJ

    ······· term··· : "tv_terminal"
    ······· kb····· : "keyboard"


    VAR

    ··· long fire1
    ··· long fire2
    ··· long fire3
    ··· long fire4
    ··· long fire5
    ··· long fire6

    ··· long win1
    ··· long win2
    ··· long win3
    ··· long win4
    ··· long win5
    ··· long win6
    ···
    ··· long degree
    ···
    PUB Windows

    ··· degree := 10

    ··· fire1 := 100
    ··· fire2 := 200
    ··· fire3 := 300
    ··· fire4 := 400
    ··· fire5 := 500
    ··· fire6 := 600

    ··· win1 := 100
    ··· win2 := 200
    ··· win3 := 300
    ··· win4 := 400
    ··· win5 := 500
    ··· win6 := 600


    · term.start(12)
    · term.str(string("START FIREING WINDOWS",13))
    · kb.start(26,27)


    ··· repeat

    ····· if kb.newkey···· == "q"
    ········· fire1 := fire1 + degree
    ····· elseif kb.newkey == "Q"
    ········· fire1 := fire1 - degree

    ····· elseif kb.newkey == "w"
    ········· fire2 := fire2 + degree
    ····· elseif kb.newkey == "W"
    ········· fire2 := fire2 - degree
    ·········
    ····· elseif kb.newkey == "e"
    ········· fire3 := fire3 + degree
    ····· elseif kb.newkey == "E"
    ········· fire3 := fire3 - degree

    ····· elseif kb.newkey == "r"
    ········· fire4 := fire4 + degree
    ····· elseif kb.newkey == "R"
    ········· fire4 := fire4 - degree

    ····· elseif kb.newkey == "t"
    ········· fire5 := fire5 + degree
    ····· elseif kb.newkey == "T"
    ········· fire5 := fire5 - degree

    ····· elseif kb.newkey == "y"
    ········· fire6 := fire6 + degree
    ····· elseif kb.newkey == "Y"
    ········· fire6 := fire6 - degree


    ····· if kb.newkey···· == "z"
    ········· win1 := win1 + degree
    ····· elseif kb.newkey == "Z"
    ········· win1 := win1 - degree

    ····· elseif kb.newkey == "x"
    ········· win2 := win2 + degree
    ····· elseif kb.newkey == "X"
    ········· win2 := win2 - degree
    ·········
    ····· elseif kb.newkey == "c"
    ········· win3 := win3 + degree
    ····· elseif kb.newkey == "C"
    ········· win3 := win3 - degree

    ····· elseif kb.newkey == "v"
    ········· win4 := win4 + degree
    ····· elseif kb.newkey == "V"
    ········· win4 := win4 - degree

    ····· elseif kb.newkey == "b"
    ········· win5 := win5 + degree
    ····· elseif kb.newkey == "B"
    ········· win5 := win5 - degree

    ····· elseif kb.newkey == "n"
    ········· win6 := win6 + degree
    ····· elseif kb.newkey == "N"
    ········· win6 := win6 - degree···················
    ·····

    ····· term.dec (fire1)
    ····· term.str(string("·· "))
    ····· term.dec (fire2)
    ····· term.str(string("·· "))
    ····· term.dec (fire3)
    ····· term.str(string("·· "))
    ····· term.dec (fire4)
    ····· term.str(string("·· "))
    ····· term.dec (fire5)
    ····· term.str(string("·· "))
    ····· term.dec (fire6)
    ····· term.str(string(" ",13))
    ····· term.str(string(" ",13))

    ····· term.dec (win1)
    ····· term.str(string("·· "))
    ····· term.dec (win2)
    ····· term.str(string("·· "))
    ····· term.dec (win3)
    ····· term.str(string("·· "))
    ····· term.dec (win4)
    ····· term.str(string("·· "))
    ····· term.dec (win5)
    ····· term.str(string("·· "))
    ····· term.dec (win6)
    ····· term.str(string(" ",13))
    ····· term.str(string(" ",13))
    ····· term.str(string(" ",13))
    ····· term.str(string(" ",13))
    ····· term.str(string(" ",13))
  • Mike GreenMike Green Posts: 23,101
    edited 2008-10-13 14:05
    The slow down is probably due to all the "term." statements. They probably produce 30 or 40 characters each of which take at least 1ms to send at 9600 Baud.
Sign In or Register to comment.