Equivalente Rust EtherCAT a ecrt_request_master()
Enquanto em C++ você usaria
ethercat_request_master.cpp
// Requisitionar master
master = ecrt_request_master(0);
if (!master) {
std::cerr << "Failed to request master!" << std::endl;
return -1;
}em Rust, usando o ethercat crate, você faria assim:
ethercat_request_master.rs
use ethercat::{Master, MasterAccess};
// Você também pode usar MasterAccess::ReadOnly se não precisar de acesso de escrita
// 0 é o índice do master a abrir (geralmente 0)
let mut master = Master::open(0, MasterAccess::ReadWrite)?;
// Reserva (aka "requisitiona") o master (para acesso exclusivo, basicamente)
master.reserve()?;Note que a função Master::open abre o dispositivo master, e o método reserve é usado para requisitar acesso exclusivo ao master.
A função C++ ecrt_request_master combina tanto abrir (ecrt_open_master()) quanto reservar (ecrt_master_reserve()) o master, enquanto em Rust esses são dois passos separados. Confira o código fonte do ecrt_request_master() para mais detalhes.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow