Minimal SOEM EtherCAT example to read a UDINT object with known slave ID

The following example is based on our previous posts SOEM EtherCAT example: List all slaves and SOEM EtherCAT example: How to read UDINT object.

#include "ethercat.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    if (argc <= 1) {
        printf("Usage: %s <network interface>\n", argv[0]);
        return 1;
    }
    char *ifname = argv[1];

    printf("Starting SOEM EtherCAT slave listing\n");

    // Initialize the SOEM library with the specified network interface
    if (ec_init(ifname)) {
        printf("EtherCAT master initialized on %s\n", ifname);

        // Perform an EtherCAT network scan
        if (ec_config_init(FALSE) > 0) {
            // In OP-Modus wechseln
            ec_config_map(&IOmap);
            ec_statecheck(0, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE);
            ec_slave[0].state = EC_STATE_OPERATIONAL;
            ec_writestate(0);
            ec_statecheck(0, EC_STATE_OPERATIONAL, EC_TIMEOUTSTATE);

            // RxPDO lesen
            while(1) {
                ec_receive_processdata(EC_TIMEOUTRET);
                // PDO-Daten sind nun in ec_slave[1].inputs[] verfügbar
                
                // Warten Sie eine kurze Zeit
                osal_usleep(1000);
            }
        }
        ec_close();
    } else {
        printf("Failed to initialize EtherCAT master on %s\n", ifname);
    }
    return 0;
}