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() для отримання додаткових відомостей.
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow