Ich habe ein Gerät, das als Antwort auf Befehle, die in die Gerätedatei geschrieben wurden, eine Zeichenkette zurückgibt. Ich bin in der Lage, Befehle auf das Gerät zu schreiben und die Rückgabezeichenfolge in C mit Code zu lesen, der wie folgt aussieht:
%Vor%Versuchen Sie dasselbe in Python mit:
%Vor%Der Schreibvorgang ist erfolgreich, es wird jedoch nur eine leere Zeichenfolge zurückgegeben. Was fehlt mir hier?
Gemäß der Dokumentation os.write
:
Hinweis: Diese Funktion ist für Low-Level-E / A vorgesehen und muss auf einen Dateideskriptor angewendet werden, der von
os.open()
oderpipe()
zurückgegeben wird. Um ein "Dateiobjekt" zu schreiben, das von der integrierten Funktionopen()
oder vonpopen()
oderfdopen()
odersys.stdout
odersys.stderr
zurückgegeben wird, verwenden Sie die Methodewrite()
.
Sie sollten hier nicht mischen und passen. Wenn Sie die globale Funktion open()
verwenden, um eine Datei zu öffnen, müssen Sie nur die Methoden read()
und write()
des Dateiobjekts verwenden. Umgekehrt, wenn Sie os.open()
verwenden, um eine Datei zu öffnen, müssen Sie nur os.read()
und os.write()
verwenden.
Versuchen Sie also, Ihren Aufruf an open()
mit os.open()
; oder, behalte den open()
-Aufruf und ersetze os.write(dev, ...)
durch dev.write(...)
und ersetze os.read(dev, ...)
durch dev.read(...)
.
Fügen Sie eine os.lseek () hinzu, um an den Anfang der von Ihnen geschriebenen Zeichenfolge zu suchen. Zur Zeit haben Sie 16 Bytes geschrieben, die den Zeiger weiterleiten. Wenn Sie lesen, beginnen Sie mit dem Lesen des aktuellen Zeigers, so dass Sie ihn bis zum Anfang des geschriebenen Textes sichern müssen. Das hat für mich funktioniert:
%Vor%