serialport-stream-rs
Implements futures::Stream and futures::io::AsyncRead utilizing serialport-rs.
Initial poll starts background thread which will indefinitely wait for data in event, error or drop.
There is no backpressure handling; the crate will buffer incoming data indefinitely.
Installation
Add this to your Cargo.toml:
[]
= "0.2.0"
= "2.0"
Usage
Basic Usage
use ;
use stream;
Using with Tokio
use new;
use StreamExt;
async
AsyncRead works the same way: cargo run --example tokio_async_read -- /dev/ttyUSB0 115200 (examples/tokio_async_read.rs).
Asynchronous byte reads (AsyncRead)
The stream implements futures::io::AsyncRead. Combine it with AsyncReadExt for helpers such as read and read_to_end. Data comes from the same internal buffer as futures::Stream; use one primary read style per open stream.
For Tokio’s tokio::io::AsyncRead, bridge via tokio_util::compat (add tokio-util with the compat feature to your crate).
API Overview
Builder Functions
new(path, baud_rate)- Create a new builder.data_bits(DataBits)- Set data bits (5, 6, 7, 8).flow_control(FlowControl)- Set flow control (None, Software, Hardware).parity(Parity)- Set parity (None, Odd, Even).stop_bits(StopBits)- Set stop bits (One, Two).dtr_on_open(bool)- Control DTR signal on open.open()- Open the port and create the stream
SerialPortStream Methods
- Implements
futures::Stream— asynchronous streaming (Result<Vec<u8>, io::Error>items) - Implements
futures::io::AsyncRead— partial reads from the same receive FIFO; re-exported withAsyncReadExt - Other methods expose serial control lines (
write_request_to_send, modem status reads, buffers, breaks, etc.)
License
This project is licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgments
This crate builds upon serialport-rs for cross-platform serial port access.