2016-09-02 13 views
0

私はLEDを点滅させ、周波数を制御できるようにセットアップを作成しようとしています。 今はテスト用のプレースホルダとして10を印刷しています。 すべてが実行され、何をすべきですか、getchは私を捨てています。pythonがgetchでより速い応答を必要とする

freq = 1 
while freq > 0: 
    time.sleep(.5/freq) #half dutycycle/Hz 
    print("1") 
    time.sleep(.5/freq) #half dutycycle/Hz 
    print("0") 

    def kbfunc(): 
     return ord(msvcrt.getch()) if msvcrt.kbhit() else 0 
    #print(kbfunc()) 

    if kbfunc() == 27: #ESC 
     break 
    if kbfunc() == 49: #one 
     freq = freq + 10 
    if kbfunc() == 48: #zero 
     freq = freq - 10 

は、今ではFREQ変更部は、それのようなバギーはすべての時間を読んでいないか、私は時間プレスちょうど右に持っているようだ、起動時に。ブレークラインは、押しても問題ありません。

答えて

0
from msvcrt import getch,kbhit 
import time 

def read_kb(): 
    return ord(getch()) if kbhit() else 0 
def next_state(state): 
    return (state + 1)%2 # 1 -> 0, 0 -> 1 

freq = 1.0 # in blinks per second 
state = 0 
while freq > 0: 
    print(state) 
    state = next_state(state) 

    key = read_kb() 

    if key == 27: #ESC 
     break 
    if key == 49: #one 
     freq = freq + 1.0 
    if key == 48: #zero 
     freq = max(freq - 1.0, 1.0) 

    time.sleep(0.5/freq) 
+0

ああ、私はあなたがそこにKarolyと何かが意味するものを見て、例j2ko – Fields

2

kbfunc()コールが1つだけ必要です。結果を変数に格納します。

例:コードでは、キーがEscでない場合は、もう一度キーボードを読み取ります。

関連する問題