Paso 1: Entre el proceso de comunicación, exclusión mutua etc.
Si te interesa saber cómo Intel lo hace, puede comprobar el siguiente artículo
https://software.Intel.com/en-US/blogs/2014/09/22/...
En él, el autor explica qué IPC (Inter comunicación de proceso) es en linux, cómo variables (mutuamente excluyentes) exclusión mutua de trabajo y también proporciona un ejemplo de código, tanto para la parte de arduino y un C++ nativo del proceso.
Es un buen punto de partida, si quieres lucir bajo campana de Edison, pero, francamente, gran parte de la información proporcionada no es fácil de digerir. Aparte de lo de digestibilidad, no entiendo por qué alguien querría escribir medio el código de Arduino, un más o menos fácil, lenguaje amigable para principiantes y la otra en C++ Hard-Core, empleando variables de exclusión mutua e hilos de rosca y todo. ¿Por qué no escribir todo en C/C++ entonces?
De todos modos, una cosa es importante saber hacer bocetos de arduino comunican con otros procesos de linux: crear un archivo en el directorio /tmp/ y hacer el boceto y el otro proceso de lectura y escritura a este archivo. /tmp/ se asigna a memoria para leer y las operaciones de escritura son rápidas y no use su memoria flash. En ejemplo de Intel, el archivo creado es binario (no legible humanos).
He tratado de simplificar cosas un poco: aún hay algo de código C involucrados, pero uno puede fácilmente adaptar la parte de código de arduino a sus necesidades. Cuál es más, la comunicación se logra a través de un archivo legible humano (palabras! no ceros y unos!): /tmp/arduino.txt la ventaja es que fácilmente se puede utilizar cualquier lenguaje de programación prefieres desde el lado de linux, ya sea node.js, python, perl, php etc. y siendo capaces de controlar (es decir, leer) lo que tu programas envían entre sí. He puesto mutex, también: el sketch de arduino lee el archivo /tmp/arduino.txt y se ignora si no es completa (si no presenta una cadena OK al final). Se trata de casos más que suficiente para la mayoría del uso de un sketch de arduino.
Para este proyecto, el archivo /tmp/arduino.txt consiste en cuatro líneas:
Línea 1: cadenas de "verdaderos" o "falsos". Instruye a arduino para cambiar el LED de encendido o apagado
Línea 2: la IP de donde se originó el último comando del interruptor.
Línea 3: "OK" si el sketch de arduino no encuentra esta OK, el archivo se omite hasta el siguiente bucle.
Línea 4: dejar vacío