Skip to main content

A hypermodern, type-safe, zero-dependency python library for serial port I/O access

Project description

samps

A hypermodern, type-safe, zero-dependency Python library for serial port I/O access.

Installation

pip install samps

or

using your preferred environment / package manager of choice, e.g., poetry, conda or uv:

poetry add samps
conda install samps
uv add samps

Usage

The general usage of this library is to create a serial connection to the device you want to communicate with.

You'll need to know the serial port name and the baudrate of the device you want to communicate with, this is usually found in the device's documentation.

Once you have the serial port name and baudrate, you can create a SerialCommonInterface (or SerialAsyncCommonInterface) object and use it to communicate with the device as follows:

from samps import SerialCommonInterface as Serial

serial = Serial(port="/dev/tty.usbserial-0001", baudrate=9600)

serial.open()

print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

line = serial.readline()

print(line.decode("utf-8").strip())

serial.close()

print(["Serial Port Closed"])

or, using a context manager:

from samps import SerialCommonInterface as Serial

with Serial(port="/dev/tty.usbserial-0001", baudrate=9600) as serial:
    print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

    line = serial.readline()

    print(line.decode("utf-8").strip())

print(["Serial Port Closed"])

The library also provides an asynchronous interface for serial communication, which can be used in an asyncio event loop.

Here's an example of how to use the asynchronous interface:

from samps import SerialAsyncCommonInterface as Serial

async with Serial(port="/dev/tty.usbserial-0001", baudrate=9600) as serial:
    print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

    line = await serial.readline()

    print(line.decode("utf-8").strip())

print(["Serial Port Closed"])

Milestones

  • Implement SerialCommonInterface for POSIX systems
  • Implement SerialAsyncCommonInterface for POSIX systems
  • Implement SerialCommonInterface for Windows systems
  • Implement SerialAsyncCommonInterface for Windows systems
  • Implement SerialCommonInterface for MacOS systems
  • Implement SerialAsyncCommonInterface for MacOS systems
  • Implement SerialOverTCP (e.g., telnet RFC 2217)
  • Documentation

Contributing

Contributions are welcome! Please read the CONTRIBUTING.md file for details on how to contribute to this project.

License

This project is licensed under the terms of the MIT license.

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

samps-0.11.0.tar.gz (51.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

samps-0.11.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file samps-0.11.0.tar.gz.

File metadata

  • Download URL: samps-0.11.0.tar.gz
  • Upload date:
  • Size: 51.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for samps-0.11.0.tar.gz
Algorithm Hash digest
SHA256 c8199bf7c61c36acf666157429d428ebdf353d2e63ce6ff9dfeb56e230e27de9
MD5 baf80e733d9bb4dc277b3c3dabd12ae6
BLAKE2b-256 ce9b5fb111b5d9f2a7509aee02d5dd67bdd81fb7478f213247cc8faff23839a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for samps-0.11.0.tar.gz:

Publisher: publish.yml on michealroberts/samps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samps-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: samps-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 24.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for samps-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7968f6e3602a601a11e834cdd30a9c4aa7dcba5043e0159c40eea0e218c1ef0b
MD5 c248b62b7858008a223a4683ee3a7e2a
BLAKE2b-256 57036a686623bc2e24c06124d9174a3bdfba079aee13cb70a78ff1838ba21217

See more details on using hashes here.

Provenance

The following attestation bundles were made for samps-0.11.0-py3-none-any.whl:

Publisher: publish.yml on michealroberts/samps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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