Von zwei seriellen Schnittstellen asynchron lesen

Ich möchte von zwei (oder mehr) seriellen Ports (/ dev / ttyUSB0 usw.) gleichzeitig in Python unter Linux lesen. Ich möchte vollständige Zeilen von jedem Port lesen (je nachdem, welche Daten vorliegen) und die Ergebnisse in der Reihenfolge verarbeiten, in der sie eingegangen sind (ohne Rennbedingungen). Als einfaches Beispiel könnte man einfach die Zeilen in eine einzelne zusammengeführte Datei schreiben.

Ich nehme an, dass der Weg dahin auf pyserial basiert, aber ich kann nicht genau herausfinden, wie das geht. Pyserial hat nicht blockierende Lesevorgänge mit asyncio und mit threads. Asyncio wird als experimentell markiert. Ich gehe davon aus, dass es keine Rennbedingungen geben würde, wenn die Verarbeitung in @ erfolgasyncio.Protocol.data_received(). Bei Threads müsste die Verarbeitung wahrscheinlich durch einen Mutex geschützt werden.

Vielleicht geht das auch nicht in pyserial. Die beiden seriellen Schnittstellen können als Dateien geöffnet und dann mit @ gelesen werden, wenn Daten verfügbar sinselect().

Antworten auf die Frage(6)

Ihre Antwort auf die Frage