Rust EtherCAT 中 ecrt_request_master() 的等价实现
在 C++ 中你会使用
ethercat_request_master.cpp
// 请求 master
master = ecrt_request_master(0);
if (!master) {
std::cerr << "Failed to request master!" << std::endl;
return -1;
}而在 Rust 中,使用 ethercat crate,你会这样写:
ethercat_request_master.rs
use ethercat::{Master, MasterAccess};
// 如果不需要写访问,也可以使用 MasterAccess::ReadOnly
// 0 是要打开的 master 的索引(通常为 0)
let mut master = Master::open(0, MasterAccess::ReadWrite)?;
// 预留(即"请求")master(基本上是为了独占访问)
master.reserve()?;请注意,Master::open 函数用于打开 master 设备,而 reserve 方法用于请求对 master 的独占访问。
C++ 函数 ecrt_request_master 同时完成了打开(ecrt_open_master())和预留(ecrt_master_reserve())master 两个操作,而在 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