2016-04-28 8 views
0

Ich habe dies gesucht, konnte aber keine gute Antwort bekommen.erkennen Ende der Datei in pyserial python3

Ich muss eine Datei über den COM-Port zwischen zwei PC senden.

aber ich weiß nicht, wie man das Ende der Datei erkennt.

In PC 1 verwende ich die Datei teraTerm.

In PC 2 verwenden Sie den folgenden Python-Code.

Nachdem die Datei gesendet wurde, muss ich einige Nachricht, dass die Datei abgeschlossen ist.

import serial 
ser = serial.Serial('COM1') 
ser.flush_input_buffer() 
file = open('file.txt','a')  #open empty file for appending 
while True: 
    receivedByte = ser.read()  # read 1 byte 
    file.write(receivedByte) 
    if (#detect end of file): 
     break 
print('file received') 

Bitte beachten Sie: PC-Fenster ist 8.1, pyserial, Python 3.4

Bitte auch für Datei Linux vorschlagen

Antwort

0

Es gibt keine EOF für einen seriellen Port als solche. Und was ich aus dem Internet herauslesen kann teraTerm hat kein Protokoll zum Versenden von Dateien, sondern schickt sie einfach in Rohform.

Sie könnten vielleicht den Lese-Timeout für den seriellen Port einstellen, so dass der read einen SerialTimeoutException auslösen würde, wenn keine Daten mehr vorhanden sind.

0

Ich habe diese Lösung versucht, obwohl es nicht so elegant und ziemlich einfach ist. Es funktioniert.

receivedByte = ser.read()   # read 1 byte 
while receivedByte != b'': 
    file.write(receivedByte) 
    receivedByte = ser.read() 

print('file received')