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() < 4 {
        eprintln!("Usage: foe-read <slave-position> <foe-name> <file>");
        return Err(std::io::Error::new(
            std::io::ErrorKind::Other,
            "Not enough arguments",
        ));
    }
    let slave_idx = args[1]
        .parse::<u16>()
        .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?
        .into();
    let foe_name = &args[2];
    let file = &args[3];
    let buf = std::fs::read(file)?;

    master.foe_write(slave_idx, foe_name, &buf)?;
    Ok(())
}