Con hilos se complica un poco. Debes estar seguro de no recibir y emitir al mismo tiempo.
Pero si el arduino solo contesta a los comandos que recibe en el mismo case se emite el comando y se espera la respuesta.
Otra forma sería emulando la forma de trabajar de un PLC: se mira si hay algo de comunicación externa; se controlan las entradas; se calcula lo que se deba, se escriben las salidas; se escriben las comunicaciones externas.
Pero si el arduino solo contesta a los comandos que recibe en el mismo case se emite el comando y se espera la respuesta.
Otra forma sería emulando la forma de trabajar de un PLC: se mira si hay algo de comunicación externa; se controlan las entradas; se calcula lo que se deba, se escriben las salidas; se escriben las comunicaciones externas.