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() для отримання додаткових відомостей.


Дивіться схожі статті за категоріями: Rust, EtherCAT