Sto lavorando con un Siemens Simatic IOT2040. Dopo non pochi problemi sono riuscito a sistemarlo per poterlo utilizzare con l'IDE Arduino e mandare dati in rete.
In questo momento l'ho testato in Telnet e riuscivo a mandare e ricevere Byte senza problemi.
Il programma che riceverà e visualizzerà i dati è Telemetry Viewer, che utilizza i protocolli TCP o UDP. (Utilizzando le porte COM non ho problemi ed il software funziona)
Da quel che so Telnet fa parte del protocollo TCP. Da CMD visualizzo tutto senza problemi, ma il Viewer, anche importando la porta 23, non riesce a connettersi. Credo che il problema nasca dal fatto che entrambi i dispositivi si comportano da server in attesa di un client.
Ho fatto una prova con un codice Arduino per far diventare la scheda un Client TCP ed utilizzare la porta 8080, ma il Viewer continua a non visualizzare nulla, dice solamente The TCP Server is running. Send telemetry to 192.168.1.2:8080
.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
0xE0, 0xDC, 0xA0, 0x46, 0x0A, 0xA8 };
byte server[] = {
192,168,1,2};
EthernetClient client;
int n = 0;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac);
Serial.print("Indirizzo IP del Client: ");
Serial.println(Ethernet.localIP());
if (client.connect(server, 8080)){
Serial.println("connesso");
}
}
void loop() {
if(client.connected()){
char text [20];
sprintf(text, "%d\n", n);
client.write(text);
delay(10);
n++;
}
}
Appena riesco a connettermi, l'array text
conterrà i dati provenienti da un giroscopio.
Sbaglio qualcosa? Teoricamente questo codice nasce per collegarsi ad un altro arduino con sopra un codice da Server, ma non credo sia questo il problema.
Secondo me non è ben chiara la porta, ma non so come dire alla scheda "guarda, prendi sto array e mandalo a questo indirizzo tramite questa porta", o meglio, credevo di saperlo.
Grazie