Skip to content

puddly/serialpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Installation

pip install git+https://github.com/puddly/serialpy

Usage

Serialpy features a familiar synchronous API:

import serialpy

with serialpy.Serial("/dev/serial/by-id/port", baudrate=115200) as serial:
    data = serial.readexactly(5)
    serial.write(b"test")

    serial.set_modem_bits(rts=True, dtr=True)
    bits = serial.get_modem_bits()
    assert bits.rts is True
    assert bits.dtr is True

A high-level asynchronous serial (reader, writer) pair:

import asyncio
import contextlib

import serialpy

async def main():
	reader, writer = await asyncio.open_serial_connection("/dev/serial/by-id/port", baudrate=115200)

	with contextlib.closing(writer):
	    data = await reader.readexactly(5)
	    writer.write(b"test")
	    await writer.drain()

And a low-level asynchronous serial transport:

import asyncio
import serialpy

async def main():
	loop = asyncio.get_running_loop()
	protocol = YourProtocol()

	transport, protocol = await serialpy.create_serial_connection(
	    loop,
	    lambda: protocol,
	    url="/dev/serial/by-id/port",
	    baudrate=115200
	)

The top-level constants are compatible with commonly used ones in both pyserial and pyserial-asyncio, allowing for easy testing as a replacement:

import serialpy as serial
import serialpy as serial_asyncio

About

A serial library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages