|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
peterv6i Član
Pridružen-a: Tor 22 Jan 2008 13:30 Prispevkov: 116 Aktiv.: 0.59 Kraj: Izola
|
Objavljeno: Čet Jun 01, 2017 11:11 am Naslov sporočila: Arduino ethernet + client v Javi (ne deluje) |
|
|
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 |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.18 Kraj: Maribor
|
Objavljeno: Čet Jun 01, 2017 12:23 pm Naslov sporočila: |
|
|
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 |
|
|
peterv6i Član
Pridružen-a: Tor 22 Jan 2008 13:30 Prispevkov: 116 Aktiv.: 0.59 Kraj: Izola
|
Objavljeno: Čet Jun 01, 2017 12:27 pm Naslov sporočila: |
|
|
Probal sem tudi preko telnet-a na port 8080 pa tudi nič ne izpiše... |
|
Nazaj na vrh |
|
|
peterv6i Član
Pridružen-a: Tor 22 Jan 2008 13:30 Prispevkov: 116 Aktiv.: 0.59 Kraj: Izola
|
Objavljeno: Čet Jun 01, 2017 2:37 pm Naslov sporočila: |
|
|
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 |
|
|
|
|
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: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|