Buenas gente, soy nuevo en el mundo de la programación. estoy creando una interfaz que actúa cuando se activan unos reles N.C.
Mi problema es que cuando veo los paquetes con un snifer (wireshark) me dice que "destination port: 0" cuando supuestamente puse 5005, mi primer paso es verlo en whireshark para levantar los datos que mando con un software en phyton, pero desde ya leer el paquete que llega me esta fallando, si lo leo pero en el "puerto 0"
Ojala me puedan dar una mano, saludos y gracias.
Parte del código es el siguiente:
//cargan las funcionalidades ethernet y libreria UDP
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
// configuramos la MAC address y la IP:
byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x98, 0x93};
IPAddress ip(192, 168, 0, 2);
// habilitamos el puerto 5005 para "hablar"
unsigned int localPort = 5005;
// sentencia que permite enviar y recibir paquetes UDP
EthernetUDP Udp;
//aqui se podra variar el numero de veces que se tendra que repetir un evento para enviar UDP, esto ayuda a evitar falsas alarmas:
int repetir_evento = 5;//
///////////////////////////////////////////////////////////////////
//lecturas_positivas (x,y) ------> x = nro de modem, y = nro evento
///////////////////////////////////////////////////////////////////
int lecturas_positivas31 = 0;
int lecturas_positivas32 = 0;
int lecturas_positivas33 = 0;
int lecturas_positivas34 = 0;
//variables que hacen corresponder el nro. de modem con el pin de salida en el arduino
int modem3 = 2;
void setup() {
//se inicia la comunicacion ethernet y UDP:
Ethernet.begin(mac,ip);
Udp.begin(localPort);
Serial.begin(9600);//SE ESTABLECE QUE VA A VER LECTURA SERIAL,
//EN EL PROYECTO FINAL COMO USAREMOS ETHERNET SHIELD SE CAMBIARAN
//LOS PINES O Y 1 COMO OUTPUTS YA QUE NO USAREMOS SERIAL.
pinMode(0, OUTPUT);//SE DECLARAN LOS PINES COMO SALIDAS, LOS
pinMode(1, OUTPUT);//CUALES "SELECCIONARAN" EL MODEM A LEER.
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);//LOS PINES 10 A 13 SE RESERVAN PARA LA COMUNICACION POR ETHERNET FUTURA.
pinMode(14, INPUT);// POR COMODIDAD EN LA PLACA SE DECLARAN ESTOS PINES COMO INPUTS QUE VENDRIAN A INYECTAR
pinMode(15, INPUT);// LOS ESTADOS DE LOS EVENTOS "HIGH" O "LOW".
pinMode(16, INPUT);// LOS MISMOS SON E/S ANALOGICAS PERO AL DECLARARLAS CON PinMode() SE USAN COMO
pinMode(17, INPUT);// E/S DIGITALES.
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
}
void loop(){
////////////////////////////////////////////////////////////////
//modem 3 - salida 2 en arduino (ver declaracion de variables)//
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
digitalWrite (modem3, HIGH);//
//para el evento 1 "unit fault"
if (digitalRead(14) == 1){//si la entrada digital pin14 esta en "high"
Serial.println ("Unit Fault " + String(3) + " " + String(lecturas_positivas31));//imprimir por serial el primer evento + nro de modem + valor de lecturas positivas
// ** ** **
if (lecturas_positivas31 < repetir_evento)//si el evento esta en alto y no paso la cantidad de veces necesarias
// **
{lecturas_positivas31 ++;}//si el nro de lecturas positivas es menor que las requeridas para activar la alarma y el evento esta activado, incrementar nro de lecturas
else {Udp.parsePacket();
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());//comienza la conexion UDP
Udp.write(byte(B00000000) + Udp.write("texto"));//el byte se ve en cod ascii y en dec? texto ok
Udp.endPacket();}}//termina la escritura de datos UDP
// **
else{lecturas_positivas31 = 0;}//si la entrada esta en "low" resetear lectura_positiva
delay(200);
//para el evento 2 "Tx Traffic"
if (digitalRead(15) == 1){//si la entrada digital pin14 esta en "high"
Serial.println ("Tx Traffic " + String(3) + " " + String(lecturas_positivas32));//imprimir por serial el segundo evento + nro de modem + valor de lecturas positivas
// ** ** **
if (lecturas_positivas32 < repetir_evento)
{lecturas_positivas32 ++;}//si el nro de lecturas positivas es menor que las requeridas para activar la alarma y el evento esta activado, incrementar nro de lecturas
else {Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());//comienza la conexion UDP
Udp.write(byte(B00000000) + Udp.write("texto"));//el byte se ve en cod ascii y en dec? texto ok
Udp.endPacket();}}//termina la escritura de datos UDP
// **
else{lecturas_positivas32 = 0;}//si la entrada esta en "low" resetear lectura_positiva
delay(200);
//para el evento 3 "Rx Traffic"
if (digitalRead(16) == 1){//si la entrada digital pin14 esta en "high"
Serial.println ("Rx Traffic " + String(3) + " " + String(lecturas_positivas33));//imprimir por serial el tercer evento + nro de modem + valor de lecturas positivas
// ** ** **
if (lecturas_positivas33 < repetir_evento)
{lecturas_positivas33 ++;}//si el nro de lecturas positivas es menor que las requeridas para activar la alarma y el evento esta activado, incrementar nro de lecturas
else {Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());//comienza la conexion UDP
Udp.write(byte(B00000000) + Udp.write("texto"));//el byte se ve en cod ascii y en dec? texto ok
Udp.endPacket();}}//termina la escritura de datos UDP
// **
else{lecturas_positivas33 = 0;}//si la entrada esta en "low" resetear lectura_positiva
delay(200);