2016-12-21 7 views
0

メインのGUIスレッドとRFIDスレッド(デバイスから読み込み、ジョブをQueue()に置くデーモンスレッド)を使用してkivyアプリケーションを取得しました。入ってくるジョブについてQueue()に問い合わせる時計によって設定されたスケジュール間隔があります。 GUIにはバックグラウンドでイメージがあり、ジョブがキューに見つかるたびにすべてのウィジェットがクリアされ、イメージがウィジェットに追加され、2秒後にクリアされ、ループが開始されます。kivyからrerpery piの画面が空白になる原因となるweridの動作

class MainScreen(Screen): 
    background = BACKGROUND 
    def __init__(self): 
     super(MainScreen, self).__init__() 
     # Checking for cart input 30 times per second 
     self.event = Clock.schedule_interval(self.listen_for_cart_input, EVENT_INTERVAL_RATE) 
     self.add_widget(Image(source=self.background)) 

    def listen_for_cart_input(self, dt): 
     try: 
      code = carts.get(timeout=QUEUE_TIMEOUT) 
      Clock.unschedule(self.event) 
      # Do Something 
      self.handle_transition() 
     except (Empty, AssertionError): 
      pass 
    def handle_transition(self): 
     trigger_back_to_main = Clock.create_trigger(self.back_to_main, timeout=TRANSITION_TIMEOUT) 
     self.clear_widgets() 
     self.add_widget(Image(source=image)) 
     trigger_back_to_main() 

    def back_to_main(self, dt): 
     self.clear_widgets() 
     self.add_widget(Image(source=self.background)) 
     self.event = Clock.schedule_interval(self.listen_for_cart_input, EVENT_INTERVAL_RATE) 

それはカードを挿入した後、完全に動作しますが、1日に数回(カード挿入1日あたり約100回起きる)、画面には、以下の例外をブランクになります。画面が空白になり、アプリが正しく機能していることに注意してください。また、カードを複数回挿入した後、画面が再び表示され、画像が表示されます。

バグですか? 私はこの問題は、LCDにラズベリーパイを接続するHDMIケーブルに関連していた上げexecption

[WARNING   ] stderr: Exception in thread Thread-3: 
[WARNING   ] stderr: File "/usr/local/lib/python3.5/threading.py", line 914, in _bootstrap_inner 
[WARNING   ] stderr:  self.run() 
[WARNING   ] stderr: File "/usr/local/lib/python3.5/threading.py", line 862, in run 
[WARNING   ] stderr:  self._target(*self._args, **self._kwargs) 
[WARNING   ] stderr: File "/usr/local/lib/python3.5/site-packages/kivy/input/providers/hidinput.py", line 687, in _thread_run 
[WARNING   ] stderr:  data = fd.read(struct_input_event_sz) 
[WARNING   ] stderr: OSError: [Errno 19] No such device 

答えて

0

の原因を把握することはできません。ケーブルを変えて固定しました。

関連する問題