Skip to main content

XMODEM protocol implementation.

Project description

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

XMODEM protocol implementation

Documentation available at http://packages.python.org/xmodem/

Python Package Index (PyPI) page is available at https://pypi-hypernode.com/pypi/xmodem

Usage

Create a function to get and put character data (to a serial line for example):

>>> 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)

Now, to upload a file, use the send method:

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

To download a file, use the recv method:

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

For more information, take a look at the documentation.

Changes

0.4.5:
  • bugfix: Remove bogus assert False code in recv() that resulted in AssertionError introduced in version 0.4.0 commit-id 9b03fc20, PR #29.

0.4.4:
  • bugfix: Large file transfers in send() were more likely to fail for small values of retry: This value should be the maximum failures per block transfer as documented, but was improperly implemented as the number of failures allowed for the total duration of the transfer, PR #21.

  • bugfix: send(retry=n) and recv(retry=n) should retry n times as documented, was retrying n - 1.

0.4.3:
  • bugfix: putc() callback was called in series, 3 times for each part of xmodem block header, data, and checksum during block transfer. Now all three data blocks are sent by single putc() call. This resolves issues when integrating with microcontrollers or equipment sensitive to timing issues at stream boundaries, PR #19.

0.4.2:
  • bugfix: documentation files missing from the release tarball Issue #16.

0.4.1
  • bugfix: re-transmit in send() on NAK or timeout, previously re-transmissions (wrongly) occurred only on garbage bytes. PR #12.

0.4.0
  • enhancement: support for python 3 PR #8.

  • bugfix: CRC failures in XMODEM.recv() were not renegotiated correctly PR #11.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xmodem-0.4.5.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

xmodem-0.4.5-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file xmodem-0.4.5.tar.gz.

File metadata

  • Download URL: xmodem-0.4.5.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xmodem-0.4.5.tar.gz
Algorithm Hash digest
SHA256 8b7ca0f45cdf0f5e7212a60931c98b333da5ef2fc6702a5d10c51b9fc52ce91c
MD5 af8d14e7c0219a62b9f5d413176bd00a
BLAKE2b-256 de3013c7b6c34d858da1c479b8ff36b946a230261183c4e7a76d1978e80c7578

See more details on using hashes here.

Provenance

File details

Details for the file xmodem-0.4.5-py3-none-any.whl.

File metadata

File hashes

Hashes for xmodem-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 99fc276d36dd5ce526889c3fe3e011de30275c675913540983d96979f152fed1
MD5 bf2a1a46f560bf654785ce08bdec5519
BLAKE2b-256 7aaa3c57438250d7649af63a1ad70a790ebe353aa4c3c056e72f52a9cd75a6c9

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page