GitXplorerGitXplorer
d

serial2-rs

public
57 stars
13 forks
5 issues

Commits

List of commits on branch main.
Unverified
9107cf2d0a0408d9a519b070c06d9e151c6217ab

Bump version to 0.2.28.

dde-vri-es committed 2 months ago
Verified
e824bd70a50dc336ae19a4c07b39f175f3d3f29f

Merge pull request #45 from de-vri-es/fix-verifying-applied-settings-on-apple

dde-vri-es committed 2 months ago
Unverified
c455f6e1f188fc615ff52625a4d0278f8e4f25ca

Fix the way applied settings are verified on iOS and macOS.

dde-vri-es committed 2 months ago
Unverified
4b9413dee17fd98a171d2969a7b7b32359b56d13

Bump version to 0.2.27.

dde-vri-es committed 4 months ago
Verified
87620ea30430b9c96bbd26987800af4fabd5b5ec

Merge pull request #42 from de-vri-es/allow-inexact-baudrate

dde-vri-es committed 5 months ago
Unverified
17a079ea868daa83e6020a58955e07d7a1a21a98

Allow for a 2.5% deviation in actual baud rate on Unix.

dde-vri-es committed 5 months ago

README

The README file for this repository.

serial2

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:

  • Simple interface: one SerialPort struct for all supported platforms.
  • List available ports.
  • Custom baud rates on all supported platforms except Solaris and Illumos.
  • Concurrent reads and writes from multiple threads, even on Windows.
  • Purge the OS buffers (useful to discard read noise when the line should have been silent, for example).
  • Read and control individual modem status lines to use them as general purpose I/O.
  • Cross platform configuration of serial port settings:
    • Baud rate
    • Character size
    • Stop bits
    • Parity checks
    • Flow control
    • Read/write timeouts
  • Full access to platform specific serial port settings using target specific feature flags ("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.

Example

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])?;
}