跳转到主要内容

XMODEM协议实现。

项目描述

https://travis-ci.org/tehmaze/xmodem.png?branch=master https://coveralls.io/repos/tehmaze/xmodem/badge.png

XMODEM协议实现

文档可在http://packages.python.org/xmodem/找到

Python包索引(PyPI)页面可在https://pypi.python.org/pypi/xmodem找到

用法

创建一个函数来获取和发送字符数据(例如,到一个串行线)

>>> import serial
>>> from xmodem import XMODEM
>>> ser = serial.Serial('/dev/ttyUSB0', timeout=0) # or whatever port you need
>>> def getc(size, timeout=1):
...     return ser.read(size) or None
...
>>> def putc(data, timeout=1):
...     return ser.write(data)  # note that this ignores the timeout
...
>>> modem = XMODEM(getc, putc)

现在,要上传文件,请使用send方法

>>> stream = open('/etc/fstab', 'rb')
>>> modem.send(stream)

要下载文件,请使用recv方法

>>> stream = open('output', 'wb')
>>> modem.recv(stream)

有关更多信息,请参阅文档

变更

0.4.7:
  • bugfix: 在recv()中,一些错误导致的停滞,PR #56

  • bugfix: 在send()中的序列号计算错误,PR #52

  • enhancement: 为recv()添加了回调函数,PR #53

  • bugfix: 在recv()中接收空文件和停滞条件,PR #50

  • bugfix: 现在在某些错误和一些CLI修复的情况下调用回调函数,8a798e8b

  • bugfix: 删除logging.warn()的DepreactionWarning,PR #49

0.4.6:
  • 修复bug:在启动序列中接收到EOT时终止发送。问题 #34

  • 增强:在源分布中包含LICENSE文件。

0.4.5:
  • 修复bug:在recv()中删除了无效的assert False代码,这导致了在版本0.4.0的commit-id 9b03fc20中引入的AssertionErrorPR #29

0.4.4:
  • 修复bug:在send()中的大文件传输,当重试次数较小时更可能失败:此值应该是每个块传输的最大失败次数,但错误地实现为整个传输过程中允许的失败次数,PR #21

  • 修复bug:send(retry=n)recv(retry=n)应按文档所述重试n次,实际上重试了n - 1次。

0.4.3:
  • 修复bug:putc()回调依次调用,在块传输期间,对于xmodem块头、数据和校验和,每个部分调用3次。现在所有三个数据块都通过单个putc()调用发送。这解决了在集成到微控制器或对流边界时间敏感的设备时的问题,PR #19

0.4.2:
  • 修复bug:发布压缩包中缺少文档文件。问题 #16

0.4.1
  • 修复bug:在send()中接收到NAK或超时时重新传输,之前只在垃圾字节上发生错误的重传(错误地)。PR #12

0.4.0
  • 增强:支持Python 3 PR #8

  • 修复bug:XMODEM.recv()中的CRC失败没有正确重新协商 PR #11

项目详情


下载文件

下载适合您平台文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分布

xmodem-0.4.7.tar.gz (34.1 kB 查看哈希值)

上传时间

构建分布

xmodem-0.4.7-py3-none-any.whl (35.7 kB 查看哈希值)

上传时间 Python 3

xmodem-0.4.7-py2.py3-none-any.whl (35.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者