Available on crate features
tokio-rtu-sync or tokio-tcp-sync only.Expand description
Synchronous tokio-modbus client for the R4DCB08 temperature module.
This module provides a high-level API (R4DCB08 struct) to interact with
the R4DCB08 8-channel temperature module using Modbus RTU or TCP. It handles
the conversion between Rust types defined in the crate::protocol module and
the raw Modbus register values.
§Examples
§TCP Client Example
use r4dcb08_lib::tokio_sync::R4DCB08;
use std::net::SocketAddr;
use std::time::Duration;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let socket_addr: SocketAddr = "127.0.0.1:502".parse()?;
// Connect to the Modbus TCP device
let mut modbus_ctx = tokio_modbus::client::sync::tcp::connect(socket_addr)?;
modbus_ctx.set_timeout(Some(Duration::from_secs(1)));
// Read temperatures from all 8 channels
let temperatures = R4DCB08::read_temperatures(&mut modbus_ctx)?;
println!("Temperatures: {}", temperatures);
Ok(())
}§RTU Client Example
use r4dcb08_lib::tokio_sync::R4DCB08;
use r4dcb08_lib::protocol::{Address, BaudRate};
use std::time::Duration;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let builder = r4dcb08_lib::tokio_common::serial_port_builder(
"/dev/ttyUSB0", // Or "COM3" on Windows, etc.
&BaudRate::B9600,
);
let slave = tokio_modbus::Slave(1);
let mut modbus_ctx = tokio_modbus::client::sync::rtu::connect_slave(&builder, slave)?;
modbus_ctx.set_timeout(Some(Duration::from_secs(1)));
// Read the device's configured baud rate
let remote_baud_rate = R4DCB08::read_baud_rate(&mut modbus_ctx)?;
println!("Device baud rate: {}", remote_baud_rate);
Ok(())
}Structs§
- R4DCB08
- Synchronous client for interacting with the R4DCB08 temperature module over Modbus.