PySerial Events

  • Hallo,

    ich habe nach folgendem Tutorial einen WebSocketServer aufgesetzt, welcher über die RS232 Schnittstelle kommunizieren kann.
    Raspberry Pi + Arduino + Tornado

    Die Funktion ist soweit auch funktionell. Was mich aber stört ist, das der Pi nach starten des Scripts eine CPU-Auslastung von fast 100% erreicht. Die ist folgendem Stück Quelltext geschuldet, welcher für die RS232 Kommunikation zuständig ist.

    [code=php]import serial
    import time
    import multiprocessing

    class SerialProcess(multiprocessing.Process):

    def __init__(self, taskQ, resultQ):
    multiprocessing.Process.__init__(self)
    self.taskQ = taskQ
    self.resultQ = resultQ
    self.usbPort = '/dev/ttyACM0'
    self.sp = serial.Serial(self.usbPort, 115200, timeout=1)

    def close(self):
    self.sp.close()

    def sendData(self, data):
    print "sendData start..."
    self.sp.write(data)
    time.sleep(3)
    print "sendData done: " + data

    def run(self):

    self.sp.flushInput()

    while True:
    # look for incoming tornado request
    if not self.taskQ.empty():
    task = self.taskQ.get()

    # send it to the arduino
    self.sp.write(task + "\n");
    print "arduino received from tornado: " + task

    # look for incoming serial data
    if (self.sp.inWaiting() > 0):
    result = self.sp.readline().replace("\n", "")

    # send it back to tornado
    self.resultQ.put(result)[/php]

    Die "while True:" Schleife sorgt für die hohe Auslastung. Leider fehlt mir das Wissen, den Quelltext so um zu schreiben, das es Prozessorfreundlicher ist. Ich dachte daran, die Schleife gegen events zu tauschen (wenn es sowas hier geben sollte).

    Könnte mir bitte jemand helfen, diesen Quellcode Prozessorfreundlich um zu schreiben?

    Danke
    mfg Hans

  • Hallo,

    danke für die schnelle Hilfe. Das Problem ist damit erst mal behoben. Mich würde dennoch interressieren, ob man die while-Schleife nicht doch komplett gegen Events ersetzen könnte.

    Aber wenn ja, wie würde das dann aussehen?

    mfG Hans

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!