www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino ethernet + client v Javi (ne deluje)

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
peterv6i
Član
Član



Pridružen-a: Tor 22 Jan 2008 13:30
Prispevkov: 116
Aktiv.: 0.59
Kraj: Izola

PrispevekObjavljeno: Čet Jun 01, 2017 11:11 am    Naslov sporočila:  Arduino ethernet + client v Javi (ne deluje) Odgovori s citatom

Pozdravljeni,

Na Arduino sem naložil preprost primer kode, ki naj bi delovala kot EthernetServer.
Ta je na fiksnem IP-ju in port-u.
V command promptu lahko Arduina tudi pingam (se odziva na ping)..

Potem pa sem spisal še preprost program v Javi, ki odpre Socket (vtičnico) na določen ip in port.. Ko program poženem se tako na strani Arduina kot na strani odjemalca nič ne zgodi.. Namen programa je, da v konzoli odjemalca nekaj pošlješ na Arduino.. Ta sprejme podatek in ga pošlje nazaj..

Probal sem tudi direktno s kablom povezat PC in Arduino (lan kabel) ampak je enako.

Koda na Arduinu:

Koda:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 172, 16, 201, 218 };   


EthernetServer server = EthernetServer(8080);

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip);

  server.begin();
  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());
}

void loop()
{
  // if an incoming client connects, there will be bytes available to read:
  EthernetClient client = server.available();
  if (client == true) {
    // Client Connected
    Serial.println("Client Connected.");
    server.write(client.read());
  }
}


Koda v Javi za odjemalca

Koda:
package ardsocket;

import java.io.*;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ArdSocket  {

   public static void main(String args[]) throws IOException {
        final String host = "172.16.201.218";
        final int portNumber = 8080;
        System.out.println("Creating socket to '" + host + "' on port " + portNumber);

        Socket socket = new Socket(host, portNumber);
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));

        while (true) {
            System.out.println("--->:" + br.readLine());

            String userInput = userInputBR.readLine();

            out.println(userInput);
            out.flush();

            System.out.println("--->:" + br.readLine());

            if ("exit".equalsIgnoreCase(userInput)) {
                socket.close();
                break;
            }
        }
    }

}


Ne vem več kako bi zadevo lahko testiral?!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mkezmah
Član
Član



Pridružen-a: Sre 21 Jan 2009 16:30
Prispevkov: 220
Aktiv.: 1.19
Kraj: Maribor

PrispevekObjavljeno: Čet Jun 01, 2017 12:23 pm    Naslov sporočila:   Odgovori s citatom

Prvi namig z moje strani bi bil, da če ti arduino prek serijskega porta ne izpiše Client connected torej ni prejel nobenih podatkov s strani odjemalca.

Torej poskusi prilagoditi kodo v javi, da boš vsaj karkoli poslal na arduino, dokler ne pričneš dobivati izpisa preko serijskega porta. Potem bi morda na serijski port izpisal kaj si dobil,...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
peterv6i
Član
Član



Pridružen-a: Tor 22 Jan 2008 13:30
Prispevkov: 116
Aktiv.: 0.59
Kraj: Izola

PrispevekObjavljeno: Čet Jun 01, 2017 12:27 pm    Naslov sporočila:   Odgovori s citatom

Probal sem tudi preko telnet-a na port 8080 pa tudi nič ne izpiše...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
peterv6i
Član
Član



Pridružen-a: Tor 22 Jan 2008 13:30
Prispevkov: 116
Aktiv.: 0.59
Kraj: Izola

PrispevekObjavljeno: Čet Jun 01, 2017 2:37 pm    Naslov sporočila:   Odgovori s citatom

Z malo spremembe mi je uspelo..

Koda:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

  IPAddress ip(172, 16, 201, 218);
  IPAddress myDns(192,168,1, 1);
  IPAddress gateway(172, 16, 201, 179);
  IPAddress subnet(255, 255, 255, 0);
 
EthernetServer server(80);
boolean alreadyConnected = false;

void setup()
{
  Serial.begin(9600);

 // Ethernet.begin(mac, ip, myDns, gateway, subnet);
  Ethernet.begin(mac);
  server.begin();

  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // wait for a new client:
  EthernetClient client = server.available();
 
  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clear out the input buffer:
      client.flush();
      Serial.println("We have a new client");
      client.println("Hello, client!");
      alreadyConnected = true;
    }

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      //char thisChar = client.read();
      // echo the bytes back to the client:
      server.write("OK\n");
     
      // echo the bytes to the server as well:
     // Serial.write("OK\n");
    }
  }
}


Koda v Javi

Koda:
package ardsocket;

import java.io.*;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ArdSocket  {

   public static void main(String args[]) throws IOException {
        final String host = "172.16.201.220";
        final int portNumber = 80;
        System.out.println("Creating socket to '" + host + "' on port " + portNumber);

        Socket socket = new Socket(host, portNumber);
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));
        out.println("1");
            out.flush();
        while (true) {
            System.out.println("server says:" + br.readLine());
           
        }
    }

}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 47 dni


Powered by phpBB © 2001, 2005 phpBB Group