So I´ve been struggling with a code that works with LabVIEW trough the TCP/IP protocol. I think I figured out where the problem is but I haven´t been able to solve it. So I have a TCP write block in labVIEW that sends the numer 50 to my controller to compare some values inside the Arduino code. I used the serial.print to visualize what is recieved and for each loop the value shifts from 53 to 48 to -1 and between those three numbers (its never 50 as I want it to) until labview reports an error that says that the connection was closed by the peer. So my guess is that the client.read function doesn´t work as I tought it did but I don´t know what I could use instead to get that number from LabVIEW. If I use the TCP write block without sending any data the client doesn´t disconnect and everyhting else works fine.
//Se incluye librería para el WiFi
#include <WiFi.h>
//Se definen nombre de red y contraseña a la que se va a conectar el controlador
const char* ssid = "";
const char* pass = "";
//Se configura el servidor con el puerto 8000
WiFiServer server(8000);
//Se conectan los sensores a los pines 36, 39, 34 y 35
int sensor2 = 36;
int sensor3 = 39;
int sensor4 = 34;
int sensor5 = 35;
//Se conectan los relé a los pines 23, 22, 21 y 19
int led1 = 23;
int led2 = 22;
int led3 = 21;
int led4 = 19;
void setup() {
Serial.begin(115200);
//Se inicia la conexión a la red WiFi definida
WiFi.begin(ssid, pass);
delay(2000);
//Mostrar asteriscos mientras se realiza la conexión
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("*");
}
//Se anuncia cuando ya se haya conectado a la red WiFi y se muestra la dirección IP que será usada para el código en LabVIEW
Serial.println("");
Serial.println("Se ha conectado a la red WiFi");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
//Se inicia el ESP32 como servidor
server.begin();
// Se establecen los sensores como entrada
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
pinMode(sensor5, INPUT);
//Se establecen los relé como salida
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop() {
// Mostrar al cliente que el ESP32 como servidor está disponible
WiFiClient client = server.available();
//Mostrar en el puerto serial cuando el cliente se haya conectado
if (client) {
Serial.println("Cliente conectado");
//Ejecutar mientras el cliente esté conectado
while (client.connected()) {
//Calibración del sensor 2********************************
int humedad2 = analogRead(sensor2);
//int humedad1=334*humedad-81;
int porcentaje2 = map(humedad2, 579, 252, 0, 100);
//Calibración del sensor 3**********************************
int humedad3 = analogRead(sensor3);
//int humedad1=334*humedad-81;
int porcentaje3 = map(humedad3, 579, 252, 0, 100);
//Calibración del sensor 4**********************************
int humedad4 = analogRead(sensor4);
//int humedad1=334*humedad-81;
int porcentaje4 = map(humedad4, 579, 252, 0, 100);
//Calibración del sensor 5**********************************
int humedad5 = analogRead(sensor5);
//int humedad1=334*humedad-81;
int porcentaje5 = map(humedad5, 579, 252, 0, 100);
//if (client.available() > 0) {
//Se define si se enciende o apaga LED1**************************************
int labview = client.read();
if (labview == '0') {
digitalWrite(led1, LOW);
}
if (labview == '1') {
digitalWrite(led1, HIGH);
}
//Se define si se enciende o apaga LED2****************************************
//int labview=Serial.read();
if (labview == '2') {
digitalWrite(led2, LOW);
}
if (labview == '3') {
digitalWrite(led2, HIGH);
}
//Se define si se enciende o apaga LED3****************************************
//int labview=Serial.read();
if (labview == '4') {
digitalWrite(led3, LOW);
}
if (labview == '5') {
digitalWrite(led3, HIGH);
}
//Se define si se enciende o apaga LED4****************************************
//int labview=Serial.read();
if (labview == '6') {
digitalWrite(led4, LOW);
}
if (labview == '7') {
digitalWrite(led4, HIGH);
}
// }
//Mostrar en el puerto serial el valor obtenido por el sensor
//Enviar al cliente el valor obtenido por el sensor
Serial.println(porcentaje2);
client.println(porcentaje2);
Serial.println(porcentaje3);
client.println(porcentaje3);
Serial.println(porcentaje4);
client.println(porcentaje4);
Serial.println(porcentaje5);
client.println(porcentaje5);
// delay(1000);
}
//Verificar si el servidor tiene un cliente conectado
if(server.hasClient()){
//Si no hay cliente salir del loop y esperar otro cliente
return;
}
}
}

