Module tokio_sync

Module tokio_sync 

Source
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.