2016-03-28 6 views
0
def value(startH,startM,stopH,stopM): 

     def job(): 
       do job 

     def job1(): 
       do another job 


     start_time = "{0:02d}:{1:02d}".format(startH, startM) 
     stop_time = "{0:02d}:{1:02d}".format(stopH, stopM) 

     schedule.every().day.at(start_time).do(job) 
     schedule.every().day.at(stop_time).do(job1) 

     while True: 
       schedule.run_pending() 
       time.sleep(1) 

ここでstartH、startM、stopH、stopMは、開始時、開始時、停止時、停止時を意味します。アンドロイドを介してユーザによって与えられた入力である。このコードは実行されます。それはoncesを実行し、それから実行を続けます。ここに訴訟があります。私は再び時間を入力したい場合。それは受け入れられません。ループがまだ実行されている間にユーザーからの入力を受け入れるにはどうすればいいですか?最初のタスクがライトをオンにしてから2番目のタスクがライトをオフにしていると言うことができます。したがって、第2のタスクが完了したとき。それは完全なものとみなされます。ブレーク、リターンを使ってみました。それは仮定されているように動作しません。whileループを実行してもユーザー入力を受け入れる方法はありますか?

public void publish(int startH,int startM, int stopH, int stopM) 
{ 
    JSONObject js = new JSONObject(); 
    try { 
     js.put("START_HOUR", startH); 
     js.put("START_MINUTE", startM); 
     js.put("STOP_HOUR", stopH); 
     js.put("STOP_MINUTE", stopM); 



    } 


public void setTime(View view) 
{ 


    int storeStartHour = Integer.parseInt(startHrs.getText().toString()); 
    int storeStartMinutes = Integer.parseInt(startMinutes.getText().toString()); 
    int storeStopHour = Integer.parseInt(stopHrs.getText().toString()); 
    int storeStopMinutes = Integer.parseInt(stopMinutes.getText().toString()); 



    publish(storeStartHour, storeStartMinutes, storeStopHour, storeStopMinutes); 



} 
+0

スレッドを使用する、Luke – Sergius

+0

スレッドなどと呼ばれています。それまたは非同期/非ブロッキングコード。私はここにあなたのためにそれを置くだろうかわからないユーザーの入力を参照してください。 – Torxed

+0

@Torxedアンドロイドからの入力はstartHに格納され、startHはstartHでstartMはstopHとstopMの開始分などです。一度設定することができます。その後、私はもう一度設定することはできません... – sam

答えて

1

threadingを使用できます。

輸入スレッドあなたはまだ入力のものworkerは番号を生成していることができますが インポート時

def worker(num): 
    # Do some stuff 
    for i in range(5): 
     time.sleep(2) 
     print(2**(num + i)) 

if __name__ == "__main__": 
    i = int(input("Enter a number: ")) 

    t = threading.Thread(target=worker, args=(i,)) # Always put a comma after the arguments. Even if you have only one arg. 
    t.start() # Start the thread 

    while True: 
     choice = input() 

     if choice == "stop": 
      print("Waiting for the function to finish...") 
      t.join() # Stop the thread (NOTE: the program will wait for the function to finish) 
      break 

     else: 
      print(choice) 

はここで非常に簡単な例です。
stdoutが乱雑になる可能性があるので、実際にする必要がなければ、worker関数で印刷しないでください。

+0

いただきありがとうございます。しかし、私がやろうとしているのは、アンドロイドからユーザからの入力を得ることです。開始時刻として「12:40」を入力したいとします。startHは「12」を保持し、startMは「40」を保持します。停止時間も同じです。私は、ユーザーがアンドロイドからの入力をPythonインターフェイスからではなく追加できるようにしたい。あなたはなにか考えはありますか。私はこのプロセスに詰まっています – sam

+0

@サムより詳しく説明してください。あなたはandroidでスクリプトを実行していますか? – Janekmuric

+0

ユーザーは4 value.startM、startHおよびstopH stopMを入力することができます。ユーザーは値を入力し、ボタンをクリックします。それはpythonによってintepreted jsonオブジェクト形式のラズベリーに送られます。その値はPythonコードに保持されます – sam

関連する問題