我一直在搜索这个,但没有得到一个好的答案。
我必须通过两台PC之间的串口发送一个文件。
但是我不知道如何检测文件的结尾。
在PC1上,我使用teraTerm软件发送文件。
在PC2中使用以下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文件提供建议
发布于 2016-04-28 22:30:02
串行端口本身没有EOF。我从互联网上收集到的teraTerm没有发送文件的协议,只是以原始的形式发送文件。
您可以设置串行端口的读取超时,以便read
在没有剩余数据时引发SerialTimeoutException
。
发布于 2017-08-11 02:22:45
我尝试了这个解决方案,尽管它不是那么优雅和简单。它确实有效。
receivedByte = ser.read() # read 1 byte
while receivedByte != b'':
file.write(receivedByte)
receivedByte = ser.read()
print('file received')
https://stackoverflow.com/questions/36912802
复制相似问题