Ethernet Check

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
szuperp
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2012. november 17. szombat, 7:00

Ethernet Check

Hozzászólás Szerző: szuperp »

a programban 2 EthernetClinet van definiálva, client - a webszerverhez, és appClient az applikációhoz (80-as és 843-as porton futnak a szerverek hozzájuk)

néha ki szokott fagyni egyik - másik vagy mindkét szerver... írtam egy újrainicializáló függvényt, hogy ha észreveszem, hogy lefagyott SerialCommand-dal elindítom a függvényt és minden helyreáll (nem kell resetelni).

azt akarom elérni, hogy a rendszer időközönként ellenőrizze, hogy üzemkész-e vagy sem (és ekkor újrainicializál magától).

úgy próbáltam kideríteni, hogy üzemkész-e a rendszer, hogy megrróbál kliensként csatlakozni a routerhez, ha megy akkor oké, ha nem akkor inicializál...

de azt vettem észre, hogy amint az appClient-hez csatlakozok a telefonnal (nincs appClient.stop(), folyamatos a kapcsolat), sem a client nem tud a routerhez csatlakozni, sem az appClient.conneced() nem veszi fel az 1- értéket. (mindkét esetben problémát jelez... ha viszont lefut az inicializálás, akkor a telefonos applikációval megszakad a kapcsolat.

miként tudná a program megállapítani, hogy szükség van-e újrainicializálásra? és miért nem képes kliensként csatlakozni, ha az applikáció bekapcsolódik a 843-as porton?

Kód: Egész kijelölése

void EthernetCheck(){   
      
    // check client

      Serial.println(F("Checking Ethernet connections."));      
      Serial.print(F("webClient : "));    
       if (client.connect("192.168.1.1",80)){
           Serial.println(F(" Ok."));
           client.stop();}
        else{
               Serial.println(F(" Problem."));
        //   EthernetInitialize();
        }
    
   // check appClient
   
    Serial.print(F("appClient : "));   
    Serial.print(appClient.connected());
     if(!appClient.connected()){
         if (appClient.connect("192.168.1.1",80)){      
              Serial.println(F(" Ok.")); 
              appClient.stop();}
         else{
              Serial.println(F(" Problem."));
         //  EthernetInitialize();
      }
   }
}

void EthernetInitialize(){                                                                             

    Serial.println(F("Ethernet Initialization"));
    EthernetUDP Udp;
    EthernetServer server(80);
    EthernetServer appServer(843);
    Ethernet.begin(mac, ip);
    server.begin();
    appServer.begin();
    Udp.begin(localPort);
 
}
Avatar
szuperp
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2012. november 17. szombat, 7:00

Re: Ethernet Check

Hozzászólás Szerző: szuperp »

hozzátenném, hogy a szerverek közben tökéletesen működnek (látszólag), böngészőt kiszolgálják, és az applikáció is vilámgyorsan reagál... ha beépítek az applikáció résznél egy appClient.stop()-ot, akkor a checker remekül működik, csak nagyon belassítja a programfutást, ha minden alkalommal újra kell építeni az applikációnak a kapcsolatot...
Válasz küldése