Эквивалент в Rust EtherCAT для ecrt_request_master()
Тогда как в C++ вы бы использовали
ethercat_request_master.cpp
// Запрос мастера
master = ecrt_request_master(0);
if (!master) {
std::cerr << "Failed to request master!" << std::endl;
return -1;
}в Rust, с использованием крейта ethercat, вы бы сделали это так:
ethercat_request_master.rs
use ethercat::{Master, MasterAccess};
// Вы также можете использовать MasterAccess::ReadOnly, если вам не нужен доступ на запись
// 0 — это индекс мастера для открытия (обычно 0)
let mut master = Master::open(0, MasterAccess::ReadWrite)?;
// Резервирование (т.е. "запрос") мастера (для эксклюзивного доступа, по сути)
master.reserve()?;Обратите внимание, что функция Master::open открывает устройство мастера, а метод reserve используется для запроса эксклюзивного доступа к мастеру.
Функция C++ ecrt_request_master объединяет как открытие (ecrt_open_master()), так и резервирование (ecrt_master_reserve()) мастера, тогда как в Rust это два отдельных шага. Подробнее см. исходный код ecrt_request_master().
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow