使用pyserial和python 3.4通过串行发送二进制文件
我正在尝试使用python在windows中通过串行COM端口发送二进制文件,然后将相同的流写入文件。本质上,我试图复制文件,但由于这不是我的最终目标,我不想使用shutil或其他复制功能。我有一个脚本打算通过COM端口发送文件,还有一个脚本充当侦听器和文件编写器。sender脚本似乎以二进制文件的形式发送文件,但我在侦听器脚本方面遇到了问题,特别是在正确输出文件方面。我已经在下面发布了我的脚本。我从“发送方”发送的二进制流是否正确,如何更改“侦听器”以正确写入文件 听众:使用pyserial和python 3.4通过串行发送二进制文件,python,file,binary,pyserial,transfer,Python,File,Binary,Pyserial,Transfer,我正在尝试使用python在windows中通过串行COM端口发送二进制文件,然后将相同的流写入文件。本质上,我试图复制文件,但由于这不是我的最终目标,我不想使用shutil或其他复制功能。我有一个脚本打算通过COM端口发送文件,还有一个脚本充当侦听器和文件编写器。sender脚本似乎以二进制文件的形式发送文件,但我在侦听器脚本方面遇到了问题,特别是在正确输出文件方面。我已经在下面发布了我的脚本。我从“发送方”发送的二进制流是否正确,如何更改“侦听器”以正确写入文件 听众: from seria
from serial import Serial
def bytes_from_file(filename, chunksize=8192):
with open(filename, "rb") as f:
while True:
chunk = f.read(chunksize)
if chunk:
for b in chunk:
yield b
else:
break
def sendfile():
ser = Serial("COM5", 115200, timeout=30, writeTimeout=0)
filename = "c:\\temp\\savetestfile.txt"
# wait for the "Sendfile" command over serial
h = b''
while h == b'':
h = ser.read(ser.inWaiting())
h = h.decode("utf-8")
#respond with "y" if "sendfile" recieved to start data stream
if h == "sendfile":
ser.write(b'y')
with open(filename, "wb") as f:
while True:
b=ser.read(1)
print (b)
if b:
n=f.write(b)
else: break
if __name__ =="__main__":
sendfile()
发件人:
from serial import Serial
def bytes_from_file(filename, chunksize=8192):
with open(filename, "rb") as f:
while True:
chunk = f.read(chunksize)
if chunk:
for b in chunk:
yield b
else:
break
def sendfile():
#com = getCOMPortInfo()
ser = Serial("COM2", 115200, timeout=10, writeTimeout=0)
filename = askopenfilename(title="Stuff", initialdir="C:\\")
#if filename is "":
# exit()
ser.write(b"sendfile")
ok = ""
#while True:te
h = ser.read()
ok = ok + h.decode("utf-8")
if ok is "y":
print("yes!")
for b in bytes_from_file(filename):
#b = str(b).encode()
print(b)
ser.write(b)
else:
print ("Failure")
ser.close()
# example:
if __name__ =="__main__":
print(sendfile())
对于仍在问这个问题的人,我从来没有找到一个好的答案。如果您在旅行中遇到这样的问题,请随时提出建议。最后我重新设计了我的设计,这样就不需要发送文件了,但是如果可能的话,我仍然想知道如何去做。对于那些仍然在问这个问题的人,我从来没有找到一个好的答案。如果您在旅行中遇到这样的问题,请随时提出建议。最后,我重新设计了我的设计,这样就不需要发送文件了,但如果可能的话,我仍然想知道怎么做。