检测pyserial python3中的文件结尾

时间:2016-04-28 11:06:01

标签: serial-port python-3.4 pyserial

我一直在搜索这个,但无法得到一个好的答案。

我必须通过两个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文件

2 个答案:

答案 0 :(得分:0)

串口没有EOF。我可以从互联网收集的内容teraTerm没有发送文件的协议,但只是以原始形式发送它们。

您可以设置串口的读取超时,以便在没有数据时read会引发SerialTimeoutException

答案 1 :(得分:0)

我试过这个解决方案,虽然它不那么优雅而且相当简单。它确实有效。

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

print('file received')