mbus-serial
mbus-serial is a helper crate for modbus-rs.
It provides serial transport implementations for Modbus RTU and Modbus ASCII,
built on top of the shared transport abstractions in mbus-core.
- Native std sync transport (
Transport) viaserialport - Native std async transport (
AsyncTransport) viatokio-serial(feature-gated) - Browser Web Serial transport for
wasm32(feature-gated)
If you want an all-in-one entry point, use modbus-rs.
If you need direct access to serial transport internals, use mbus-serial directly.
Helper Crate Role
mbus-serial is intentionally focused on transport concerns:
- Implements
Transportfrommbus-core. - Connects to real serial ports via the
serialportcrate. - Supports both RTU (
StdRtuTransport) and ASCII (StdAsciiTransport) modes. - Provides async tokio serial transports (
TokioRtuTransport,TokioAsciiTransport) behind theasyncfeature. - Provides wasm Web Serial transports (
WasmRtuTransport,WasmAsciiTransport) forwasm32targets behind thewasmfeature.
This crate does not implement high-level request/response orchestration by itself.
That logic lives in mbus-client.
What Is Included
StdSerialTransport,StdRtuTransport,StdAsciiTransport(native syncTransportimpls)TokioRtuTransport,TokioAsciiTransport(native asyncAsyncTransportimpls,asyncfeature)WasmRtuTransport,WasmAsciiTransport(browser wasm transports,wasmfeature +wasm32target)- Serial connection handling (open/close/check connection)
- ADU send/receive support
- Error mapping from I/O errors to
TransportError/MbusError - Utility function to enumerate serial ports on native targets (
available_ports)
Public API Surface
The crate re-exports, depending on target/features:
- Native (non-wasm):
StdSerialTransport,StdRtuTransport,StdAsciiTransport - Native +
async:TokioRtuTransport,TokioAsciiTransport wasm32+wasm:WasmRtuTransport,WasmAsciiTransport
Usage
1) Add dependencies
[]
= "0.8.0"
2) Create serial config and transport
use ;
3) List available serial ports
use StdRtuTransport;
Feature Flags
logging: enableslogfacade diagnostics in serial transportsasync: enables tokio-backed async serial transports (TokioRtuTransport,TokioAsciiTransport)wasm: enables Web Serial support forwasm32targets (WasmRtuTransport,WasmAsciiTransport)
Configuration Notes
- Use
StdRtuTransport::new()withSerialMode::Rtuconfigs andStdAsciiTransport::new()withSerialMode::Asciiconfigs. If they do not match,connectreturnsTransportError::InvalidConfiguration. stop_bitsmust be1or2.response_timeout_mscontrols serial read timeout behavior.- Async transport uses
Tokio*Transport::new(&config)and validates mode similarly viaMbusError::InvalidConfiguration.
Logging
mbus-serial supports optional logging via the log facade.
- Enable feature:
logging - This only emits through the facade; your application provides a logger backend.
Example dependency setup:
[]
= { = "0.8.0", = ["logging"] }
= "0.11"
Platform Notes
- Uses the
serialportcrate under the hood. - Error behavior can vary by driver/OS.
- Some pseudo-terminals (especially on macOS) may not support all serial parameter operations.
Typical Integration Pattern
In most applications, mbus-serial is used together with mbus-client:
- Build
ModbusConfig::Serial(...). - Instantiate
StdRtuTransportorStdAsciiTransport. - Pass transport into
ClientServicesfrommbus-client. - Use client services for function-code operations.
License
Copyright (C) 2025 Raghava Challari
This project is currently licensed under GNU GPL v3.0. See LICENSE for details.
This crate is licensed under GPLv3. If you require a commercial license to use this crate in a proprietary project, please contact ch.raghava44@gmail.com to purchase a license.
Contact
For questions or support:
- Name: Raghava Ch
- Email: ch.raghava44@gmail.com