2

我有一个 Raspberry Pi 通过两个无线电模块连接到我的 Macbook Pro。到目前为止,我已经成功地使用 pyserial 从一个设备向另一个设备发送字符串和命令,但是,我找不到发送文本文件的方法。就像在超级终端上一样,您可以选择通过 xmodem 发送文本文件。我已经下载了 xmodem 库并玩了一下,我想我可以发送文件,但我不知道如何在另一端接收它们。有什么帮助吗?

4

1 回答 1

0

这个问题不是很清楚......您只需通过串行端口发送字节......客户端将字节保存到文件中。这是一个简单的实现。

服务器代码

from serial import Serial
ser = Serial("com4") #or whatever 
readline = lambda : iter(lambda:ser.read(1),"\n")
while "".join(readline()) != "<<SENDFILE>>": #wait for client to request file
    pass #do nothing ... just waiting ... we could time.sleep() if we didnt want to constantly loop
ser.write(open("some_file.txt","rb").read()) #send file
ser.write("\n<<EOF>>\n") #send message indicating file transmission complete

客户代码

from serial import Serial
ser = Serial("com4") #or whatever 
ser.write("<<SENDFILE>>\n") #tell server we are ready to recieve
readline = lambda : iter(lambda:ser.read(1),"\n")
with open("somefile.txt","wb") as outfile:
   while True:
       line = "".join(readline())
       if line == "<<EOF>>":
           break #done so stop accumulating lines
       print >> outfile,line

这是一个应该可以工作的过于简化的示例,但它假设 100% 正确传输,这并不总是能够实现……更好的方案是逐行发送它和校验和以验证正确的传输,但基本思想是相同的...校验和将是 OP 的 exercsize

于 2013-12-19T00:59:07.930 回答