2016-04-28 63 views
0

我一直在尋找這個,但無法得到一個很好的答案。檢測pyserial中的文件結尾python3

我必須通過兩個PC之間的COM端口發送文件。

但我不知道如何檢測文件的結尾。

在PC 1中,我使用teraTerm軟件發送文件。

在PC 2中使用以下python代碼。

文件發送後,我需要把一些消息,該文件是完整的。

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') 

請注意:PC是Windows 8.1,Pyserial,Python的3.4

請還建議爲Linux文件

回答

0

沒有EOF一個串口這樣。而且我可以從互聯網上收集到的teraTerm沒有發送文件的協議,只是以原始格式發送它們。

您可以設置串口的讀取超時時間,以便在沒有剩餘數據時read會產生SerialTimeoutException

0

我試過這個解決方案,雖然它不夠優雅,而且相當簡單。它確實有效。

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

print('file received')