====== ICnet() ====== ''ICnet()'' checks incoming requests and handles Cnet Slave responses. {{:en-us_commands:reference:icnet.svg?900|ICnet command operation flow}} ''void ICnet()'' ===== Commands ===== ^ Command ^ Arguments ^ Return Value ^ Operation ^ | ''ICnet()'' | None | ''void'' | Checks incoming requests and handles Cnet Slave responses. | ===== Example ===== This example uses the MPINO-16A8R8T RS-485 port ''Serial2'', input ''D22'', and transistor output ''D39''. void setup() { ICnetMem(64, 64, 16); // Set the M·D·R memory sizes used by Cnet Slave. ICnetAdr(0, 0, 0); // Set the start addresses of M·D·R memory. ICnetInit(Serial2, 1, 9600); // Set the communication port, station number and baud rate. if (M != nullptr) M[0] = false; } void loop() { ICnet(); // Check incoming requests and process Cnet Slave responses. if (M != nullptr) M[0] = digitalRead(22) == HIGH; if (D != nullptr) digitalWrite(39, D[0] ? HIGH : LOW); } ===== Precautions ===== * Keep calling ''ICnet()'' in ''loop()''. * Set M/D/R sizes within the available SRAM. * When sharing memory with Modbus, check for duplicate allocation and address conventions. Both ''ICnetMem()'' and ''ImodbusRTUMem()'' reallocate shared ''M''/''D''. Assign final size management to only one of them and initialize both protocols after the last reallocation. * Allocation functions do not return success status. Check whether ''M'', ''D'' and ''R'' are ''nullptr'' before accessing them in user code. ===== Built-in Commands in the Same Category ===== * [[:en-us_commands:reference:icnetmem|ICnetMem() View detailed description]] * [[:en-us_commands:reference:icnetadr|ICnetAdr() View detailed description]] * [[:en-us_commands:reference:icnetinit|ICnetInit() View detailed description]] [[:en-us_commands:builtin|← Built-in Command List]]