ethercat 0.3.1

Binding to the IgH/Etherlab open-source EtherCAT master
Documentation
use ethercat::{Master, MasterAccess};

fn main() -> Result<(), std::io::Error> {
    let mut master = Master::open(0, MasterAccess::ReadWrite)?;

    let args: Vec<String> = std::env::args().collect();
    if args.len() < 3 {
        eprintln!("Usage: foe-read <slave-position> <foe-name>");
        return Err(std::io::Error::new(
            std::io::ErrorKind::Other,
            "Not enough arguments",
        ));
    }
    let slave_idx: ethercat::SlavePos = args[1]
        .parse::<u16>()
        .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?
        .into();
    let foe_name = &args[2];
    let res = master.foe_read(slave_idx, foe_name)?;
    println!("FoE data: {:x?}, {} bytes", res, res.len());
    Ok(())
}