kann man mit der seriellen Schnittstelle/USB auch ohne queue kommunizieren, wenn auf die GUI verzichtet wird ?
ohne queue :
Code: Alles auswählen
#/usr/bin/env python
# -*- coding: utf-8
import time
from threading import Thread, Event
from pylibftdi import BitBangDevice
class ToggleLed(object):
def __init__(self):
self.run_event = None
def __enter__(self):
return self
def __exit__(self, *args):
self.release()
def stop(self):
self.run_event.set()
def toggle(self, port):
self.port = port
def off(self):
self.port = self.port_off
def start(self):
self.run_event = Event()
self.thread = Thread(target=self.worker_thread)
self.thread.daemon = True
self.thread.start()
def worker_thread(self):
with BitBangDevice() as bb:
while not self.run_event.is_set():
bb.port = self.port
def release(self):
if self.run_event:
self.stop()
def main():
with ToggleLed() as toggle_led:
toggle_led.start()
while True:
toggle_led.toggle(0)
time.sleep(0.5)
toggle_led.toggle(1)
time.sleep(0.5)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print("KeyboardInterrupt")
Code: Alles auswählen
#/usr/bin/env python
# -*- coding: utf-8
import time
from threading import Thread, Event
from pylibftdi import BitBangDevice
import queue
class ToggleLed(object):
def __init__(self, queue):
self.queue = queue
self.run_event = None
def __enter__(self):
return self
def __exit__(self, *args):
self.release()
def stop(self):
self.run_event.set()
def start(self):
self.run_event = Event()
self.thread = Thread(target=self.worker_thread)
self.thread.daemon = True
self.thread.start()
def worker_thread(self):
with BitBangDevice() as bb:
while not self.run_event.is_set():
if not self.queue.empty():
while True:
try:
bb.port = self.queue.get_nowait()
except queue.Empty:
break
def release(self):
if self.run_event:
self.stop()
def main(queue):
queue = queue.Queue()
with ToggleLed(queue) as toggle_led:
toggle_led.start()
while True:
time.sleep(0.5)
queue.put(0)
time.sleep(0.5)
queue.put(1)
if __name__ == '__main__':
try:
main(queue)
except KeyboardInterrupt:
print("KeyboardInterrupt")