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() 源代码


Check out similar posts by category: Rust, EtherCAT