allora... questo è quello che so:
nel programma utente del PLC, i dati da inviare al client stanno su un buffer di 82 byte. Di questi 82 byte, io ne uso un certo numero per scriverci una stringa qualsiasi. Gli altri byte del buffer rimangono a 0. Io posso anche decidere quanti byte scrivere sul socket (ho impostato che li scriva tutti e 82).Questi byte verranno scritti sul socket una sola volta. Non so se oltre a questi, lui ne scrive altri.
Una volta che si è stabilita la connessione, setto manualmente un byte nel programma utente del PLC ("abilita scrittura dati"). Fatto questo, quello che so è i dati vengono scritti sul socket (lo so perchè usando un'altra applicazione che legge i dati dal socket, una volta sganciato il byte mi trovo automaticamente la famosa stringa scritta in una area di testo, senza fare nulla).
Un'altra cosa che ho notato: questo è il codice del metodo che legge i dati:
codice:
public String LeggiDati(Socket s1){
String dati="";
System.out.println ("ora eseguo il metodo LeggiDati");
try{
InputStream is = s1.getInputStream();
BufferedReader dis = new BufferedReader(
new InputStreamReader(is));
System.out.println ("i dati ricevuti dal server sono: "+dis.readLine());
dis.close();
s1.close();
}
catch(IOException ex){
System.out.println ("Errore nella lettura dei dati");
}
return dati;
}
quando lancio l'applicazione da netbeans, nella console mi scrive "ora eseguo il metodo LeggiDati" , ma non mi scrive "i dati ricevuti dal server sono...";
per cui si pianta in una di queste 3 righe:
codice:
InputStream is = s1.getInputStream();
BufferedReader dis = new BufferedReader(
new InputStreamReader(is));
più di questo, purtroppo, non so.