[][src]Module modbus::scoped

A set of objects which automatically change their register or coil value when they go out of scope

Examples

When the auto object goes out of scope and is dropped, the value of coil 10 is switched On:

use modbus::{Client, Coil};
use modbus::tcp;
use modbus::scoped::{ScopedCoil, CoilDropFunction};

let mut cfg = tcp::Config::default();
let mut client = tcp::Transport::new_with_cfg("127.0.0.1", cfg).unwrap();
{
   let mut auto = ScopedCoil::new(&mut client, 10, CoilDropFunction::On).unwrap();
   assert_eq!(auto.mut_transport().read_coils(10, 1).unwrap(), vec![Coil::Off]);
}
assert_eq!(client.read_coils(10, 1).unwrap(), vec![Coil::On]);

When the auto object goes out of scope and is dropped, the value of register 10 is modified by function fun:

use modbus::{Client, Coil};
use modbus::tcp;
use modbus::scoped::{ScopedRegister, RegisterDropFunction};

let mut cfg = tcp::Config::default();
let mut client = tcp::Transport::new_with_cfg("127.0.0.1", cfg).unwrap();
client.write_single_register(10, 1);
{
    let fun = |v| v + 5;
    let mut auto = ScopedRegister::new(&mut client, 10, RegisterDropFunction::Fun(&fun)).unwrap();
    assert_eq!(auto.mut_transport().read_holding_registers(10, 1).unwrap(), vec![1]);
}
assert_eq!(client.read_holding_registers(10, 1).unwrap(), vec![6]);

Structs

ScopedCoil

Auto object which modifies it's coil value depending on a given modification function if it goes out of scope.

ScopedRegister

Auto object which modifies it's register value depending on a given modification function if it goes out of scope.

Enums

CoilDropFunction

Action to perform when the ScopedCoil is dropped.

RegisterDropFunction

Action to perform when the ScopedRegister is dropped.