我一直在搜索这个,但无法得到一个好的答案。
我必须通过两个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 :(得分: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')