Skip to main content

A simple Python library and a REST API server that interacts with COM ports

Project description

COM-Server

GitHub Workflow Status Documentation Status GitHub Workflow Status

COM-Server is a Python library and a local web server that hosts an API locally and interacts with serial or COM ports. The Python library provides a different way of sending and receiving data from the serial port using a thread, and it also gives a set of tools that simplifies the task of manipulating data to and from the port. Additionally, the server makes it easier for other processes to communicate with the serial port.

The serial communication uses pyserial as its back-end and the server uses flask-restful and Flask. Reading their documentations may help with developing with COM-Server.

NOTE: COM-Server has only been tested on:
Operating systems:

  • Ubuntu 20.04 (Focal Fossa)
  • Raspberry Pi OS 10 (Buster)
  • Mac OS 10.15.x (Catalina)
  • Mac OS 11.6 (Big Sur)
  • Windows 10

Python versions:

  • Python 3.7.2
  • Python 3.7.3
  • Python 3.8.10
  • Python 3.9.7
  • Python 3.10.0

Serial ports:

  • Arduino UNO
  • Arduino Nano

Recommended use

COM-Server is not meant to be used like a normal JSON API, even though it uses Flask and Flask-restful. If there are many different devices accessing the endpoints at the same time, data will be backed up, since the serial communication is relatively slow and things cannot be sent to the serial device at the same time.

The server is recommended to be used like a socket, and it should be used as a way for another process (should be only one; COM-Server has no implemented synchronization) on one computer (could be the same computer or another one on the same network) to communicate with the serial port via pyserial and this Python program.

Installation

NOTE: COM-Server only works on Python >= 3.6.

Using pip:

> pip install -U com-server

Quickstart

# launches a development server on http://0.0.0.0:8080

import com_server

conn = com_server.Connection("<port>", <baud>) 
handler = com_server.RestApiHandler(conn) 
com_server.Builtins(handler) 

handler.run_dev(host="0.0.0.0", port=8080) 

conn.disconnect()

Replace "<port>" and "<baud>" with the serial port and baud rate.

Alternatively, you can use the command line:

> com_server -p <port> -b <baud> run

Again, replace "<port>" and "<baud>" with the serial port and baud rate.

Links:

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

com-server-0.1b0.tar.gz (54.0 kB view details)

Uploaded Source

Built Distribution

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

com_server-0.1b0-py2.py3-none-any.whl (31.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file com-server-0.1b0.tar.gz.

File metadata

  • Download URL: com-server-0.1b0.tar.gz
  • Upload date:
  • Size: 54.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for com-server-0.1b0.tar.gz
Algorithm Hash digest
SHA256 70f9f4bb2557a755dfe7245897f159fc7c615ac442f5328f54f4a88e94e6c10d
MD5 f521d8ac3c525678f0f3b03dca3cf4c5
BLAKE2b-256 427a3bb245301e6cc6c21f8b6af38e866ac845e083d2a56612b28c04d7825ceb

See more details on using hashes here.

File details

Details for the file com_server-0.1b0-py2.py3-none-any.whl.

File metadata

  • Download URL: com_server-0.1b0-py2.py3-none-any.whl
  • Upload date:
  • Size: 31.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for com_server-0.1b0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c96d8ffd2c99d983014d7ec961a9471d89b40dde2c0082bbe96be2cac4330fe0
MD5 b9fd702cb723d825ec23690c69abe694
BLAKE2b-256 3024e30d2793eed16cb778324916e7aebe32a1079a801cc1bef6c775980b468e

See more details on using hashes here.

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