在python中使用XMODEM发送文件

问题描述 投票:0回答:3

我正在尝试使用 XMODEM 协议传输文件我看到了此链接中提供的解决方案:请帮助使用 xmodem 协议 但就我而言,文件可以发送,但不包含此内容,请帮助我...

这是我的发送代码:

import serial
from xmodem import XMODEM
from time import sleep

s = serial.Serial(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N',     stopbits=1, timeout=None, xonxoff=0, rtscts=0)
s.open()

def getc(size, timeout=1):
    return s.read(size)
def putc(data, timeout=1):
    s.write(data)
modem = XMODEM(getc, putc)

f = open('file.txt', 'rb')
stream = f.readlines()
status = modem.send(stream, retry=8)
s.close()
stream.close()

这是我的接收代码:

import serial
from xmodem import XMODEM
from time import sleep

s = serial.Serial(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
s.open()

def getc(size, timeout=1):
    return s.read(size)
def putc(data, timeout=1):
    s.write(data)
modem = XMODEM(getc, putc)

stream = open('file.txt', 'wb')
modem.recv(stream)
s.close()
python serial-port xmodem
3个回答
0
投票

我认为您刚刚打开了该文件,但从未在发送例程中读取它。

试试这个:

f = open('file.txt', 'rb')

stream = f.readlines()

0
投票

在发送例程中尝试一下:

stream = open('file.txt', 'rb')
status = modem.send(stream, retry=8)

0
投票

https://stackoverflow.com/users/2490372/aldim,看来发件人应该使用 f = open('文件.txt', 'wb'), 并且接收者应该使用 f = open('文件.txt', 'rb'). 另外,您还可以使用 Python 函数 XMODEM()。有源代码吗?另外,YMODEM() 的 Python 代码可以在线获取吗?谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.