Crates.io | serial2 |
lib.rs | serial2 |
version | 0.2.28 |
source | src |
created_at | 2021-11-07 10:17:34.250747 |
updated_at | 2024-11-10 22:15:46.557969 |
description | Cross platform serial ports |
homepage | |
repository | https://github.com/de-vri-es/serial2-rs |
max_upload_size | |
id | 478014 |
size | 153,953 |
Serial port communication for Rust.
The serial2
crate provides a cross-platform interface to serial ports.
It aims to provide a simpler interface than other alternatives.
Currently supported features:
SerialPort
struct for all supported platforms."unix"
or "windows"
).You can open and configure a serial port in one go with SerialPort::open()
.
The second argument to open()
must be a type that implements IntoSettings
.
In the simplest case, it is enough to pass a u32
for the baud rate.
Doing that will also configure a character size of 8 bits with 1 stop bit and disables parity checks and flow control.
For full control over the applied settings, pass a closure that receives the the current Settings
and return the desired settings.
If you do, you will almost always want to call Settings::set_raw()
before changing any other settings.
The standard std::io::Read
and std::io::Write
traits are implemented for SerialPort
and &SerialPort
.
This allows you to use the serial port concurrently from multiple threads through a non-mutable reference.
There are also non-trait read()
and write()
functions,
so you can use the serial port without importing any traits.
These take &self
, so they can also be used from multiple threads concurrently.
The SerialPort::available_ports()
function can be used to get a list of available serial ports on supported platforms.
This example opens a serial port and echoes back everything that is read.
use serial2::SerialPort;
// On Windows, use something like "COM1" or "COM15".
let port = SerialPort::open("/dev/ttyUSB0", 115200)?;
let mut buffer = [0; 256];
loop {
let read = port.read(&mut buffer)?;
port.write(&buffer[..read])?;
}