pub struct ModbusMaster<A: ApplicationLayer, P: PhysicalLayer> {
pub timeout_ms: u64,
pub concurrent: bool,
/* private fields */
}Fields§
§timeout_ms: u64§concurrent: boolImplementations§
Source§impl<A: ApplicationLayer + 'static, P: PhysicalLayer + 'static> ModbusMaster<A, P>
impl<A: ApplicationLayer + 'static, P: PhysicalLayer + 'static> ModbusMaster<A, P>
pub fn new( application: Arc<A>, physical: Arc<P>, options: ModbusMasterOptions, ) -> Self
pub fn is_open(&self) -> bool
pub fn is_destroyed(&self) -> bool
pub async fn open(&self, options: P::OpenOptions) -> Result<(), ModbusError>
pub async fn close(&self) -> Result<(), ModbusError>
pub async fn destroy(&self)
pub async fn read_coils( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Sourcepub async fn write_fc1(
&self,
unit: u8,
address: u16,
length: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
pub async fn write_fc1( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Alias for Self::read_coils.
pub async fn read_discrete_inputs( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Sourcepub async fn write_fc2(
&self,
unit: u8,
address: u16,
length: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
pub async fn write_fc2( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Alias for Self::read_discrete_inputs.
pub async fn read_holding_registers( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Sourcepub async fn write_fc3(
&self,
unit: u8,
address: u16,
length: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
pub async fn write_fc3( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Alias for Self::read_holding_registers.
pub async fn read_input_registers( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Sourcepub async fn write_fc4(
&self,
unit: u8,
address: u16,
length: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
pub async fn write_fc4( &self, unit: u8, address: u16, length: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Alias for Self::read_input_registers.
pub async fn write_single_coil( &self, unit: u8, address: u16, value: bool, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<bool>>, ModbusError>
Sourcepub async fn write_fc5(
&self,
unit: u8,
address: u16,
value: bool,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<bool>>, ModbusError>
pub async fn write_fc5( &self, unit: u8, address: u16, value: bool, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<bool>>, ModbusError>
Alias for Self::write_single_coil.
pub async fn write_single_register( &self, unit: u8, address: u16, value: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<u16>>, ModbusError>
Sourcepub async fn write_fc6(
&self,
unit: u8,
address: u16,
value: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<u16>>, ModbusError>
pub async fn write_fc6( &self, unit: u8, address: u16, value: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<u16>>, ModbusError>
Alias for Self::write_single_register.
pub async fn write_multiple_coils( &self, unit: u8, address: u16, values: &[bool], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Sourcepub async fn write_fc15(
&self,
unit: u8,
address: u16,
values: &[bool],
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
pub async fn write_fc15( &self, unit: u8, address: u16, values: &[bool], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<bool>>>, ModbusError>
Alias for Self::write_multiple_coils.
pub async fn write_multiple_registers( &self, unit: u8, address: u16, values: &[u16], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Sourcepub async fn write_fc16(
&self,
unit: u8,
address: u16,
values: &[u16],
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
pub async fn write_fc16( &self, unit: u8, address: u16, values: &[u16], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Alias for Self::write_multiple_registers.
pub async fn report_server_id( &self, unit: u8, server_id_length: usize, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<ServerId>>, ModbusError>
Sourcepub async fn handle_fc17(
&self,
unit: u8,
server_id_length: usize,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<ServerId>>, ModbusError>
pub async fn handle_fc17( &self, unit: u8, server_id_length: usize, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<ServerId>>, ModbusError>
Alias for Self::report_server_id.
pub async fn mask_write_register( &self, unit: u8, address: u16, and_mask: u16, or_mask: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<(u16, u16)>>, ModbusError>
Sourcepub async fn handle_fc22(
&self,
unit: u8,
address: u16,
and_mask: u16,
or_mask: u16,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<(u16, u16)>>, ModbusError>
pub async fn handle_fc22( &self, unit: u8, address: u16, and_mask: u16, or_mask: u16, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<(u16, u16)>>, ModbusError>
Alias for Self::mask_write_register.
pub async fn read_and_write_multiple_registers( &self, unit: u8, read_address: u16, read_length: u16, write_address: u16, write_values: &[u16], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Sourcepub async fn handle_fc23(
&self,
unit: u8,
read_address: u16,
read_length: u16,
write_address: u16,
write_values: &[u16],
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
pub async fn handle_fc23( &self, unit: u8, read_address: u16, read_length: u16, write_address: u16, write_values: &[u16], timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u16>>>, ModbusError>
Alias for Self::read_and_write_multiple_registers.
pub async fn read_device_identification( &self, unit: u8, read_device_id_code: u8, object_id: u8, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<DeviceIdentification>>, ModbusError>
Sourcepub async fn handle_fc43_14(
&self,
unit: u8,
read_device_id_code: u8,
object_id: u8,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<DeviceIdentification>>, ModbusError>
pub async fn handle_fc43_14( &self, unit: u8, read_device_id_code: u8, object_id: u8, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<DeviceIdentification>>, ModbusError>
Alias for Self::read_device_identification.
pub fn add_custom_function_code(&self, cfc: CustomFunctionCode)
pub fn remove_custom_function_code(&self, fc: u8)
Sourcepub async fn send_custom_fc(
&self,
unit: u8,
fc: u8,
data: Vec<u8>,
timeout_ms: Option<u64>,
) -> Result<Option<MasterResponse<Vec<u8>>>, ModbusError>
pub async fn send_custom_fc( &self, unit: u8, fc: u8, data: Vec<u8>, timeout_ms: Option<u64>, ) -> Result<Option<MasterResponse<Vec<u8>>>, ModbusError>
Send a non-standard / custom function code request. The master only
validates that the response has matching unit and fc; any payload
is returned as raw bytes. The caller must have registered a
CustomFunctionCode with predict_response_length on the
application layer (or on this master) so RTU framing can advance.
unit == 0 is broadcast: returns Ok(None) after the write.