pub struct Master { /* private fields */ }Expand description
Blocking Modbus RTU master that enforces Modbus idle timing rules between frames.
Implementations§
Source§impl Master
impl Master
Sourcepub fn new_rs485(path: &str, baud_rate: u32) -> Result<Self>
pub fn new_rs485(path: &str, baud_rate: u32) -> Result<Self>
Builds a master configured for an RS-485 style setup (8N1, blocking I/O).
The port timeout is pinned to the Modbus RTU silent interval (T3.5) for the supplied baud rate so that the reader can detect frame boundaries.
§Examples
ⓘ
use modbus_rtu::Master;
let master = Master::new_rs485("/dev/ttyUSB0", 9_600)?;
assert_eq!(master.baud_rate(), 9_600);Sourcepub fn set_baudrate(&mut self, baud_rate: u32) -> Result<()>
pub fn set_baudrate(&mut self, baud_rate: u32) -> Result<()>
Sourcepub fn send(&mut self, req: &Request<'_>) -> Result<Response, Error>
pub fn send(&mut self, req: &Request<'_>) -> Result<Response, Error>
Sends a Modbus RTU request and waits for the corresponding response.
Broadcast requests return immediately after the frame is flushed because the Modbus RTU spec forbids responses to slave id 0.
§Examples
ⓘ
use modbus_rtu::{Function, Master, Request};
let mut master = Master::new_rs485("/dev/ttyUSB0", 19_200)?;
let func = Function::ReadHoldingRegisters { starting_address: 0x0000, quantity: 2 };
let request = Request::new(0x01, &func, std::time::Duration::from_millis(200));
let response = master.send(&request)?;
assert!(response.is_success());Trait Implementations§
Auto Trait Implementations§
impl Freeze for Master
impl !RefUnwindSafe for Master
impl Send for Master
impl !Sync for Master
impl Unpin for Master
impl !UnwindSafe for Master
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more