PDA

View Full Version : [JAVA] porta COM


leon84
10-04-2007, 11:14
Salve,
devo comunicare con un dispositivo via seriale. Ho scritto le classi appositamente e ci riesco corretamente. Invio la stringa e il dispositivo mi risponde correttamente. Tutto questo quando riesco fisicamente a collegare il dispositivo via seriale al Pc. Ci sono però casi in cui il dispositivo è remoto e per contattarlo utilizzo due modem. Uno installato presso il dispositivo remoto l'altro collegato alla seriale del mio pc. Utilizzando le stesse procedure riesco a connettermi al dispositivo remoto attraverso il modem del pc ed esso mi risponde con "CONNECTED " seguito dalla velocità stabilità ma quando gli inoltro il comando ascii sembra non interpretarlo correttamente. Ora mi chiedo : perché di tutto questo ? occorre inizializzare il modem ? se si in che modo ? vi allego del codice :



public static void main(String[] args) {

// Serial porta_com = new Serial(args[0],Integer.valueOf(args[1]));
Serial porta_com = new Serial("COM1",115200);
porta_com.scrivi("ATDT xxxxxxxxxxxx");
try {

Thread.sleep(20000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
String buffer = null;
buffer = new String(porta_com.leggi());

System.out.println (buffer);
porta_com.write_owi("PLEIQ,MST,0,200");

try {
Thread.sleep(5000);
buffer = new String(porta_com.leggi());
} catch (InterruptedException ex) {
ex.printStackTrace();
}
try {

porta_com.download("pippo.txt",1);


} catch (Exception ex) {
ex.printStackTrace();
}

porta_com.chiudi();
}
}


Se vi serve altro chiedete pure ...

misterx
10-04-2007, 13:15
col modem intendi per via telefonica ?

leon84
10-04-2007, 13:43
col modem intendi per via telefonica ?

certo

^TiGeRShArK^
11-04-2007, 00:26
se non ricordo male ai tempi per inizializzare il modem i comandi + usati erano:
ATZ
ATX3&F1

prova con questi e fammi sapere :p

recoil
11-04-2007, 10:23
attenzione perché il comando AT deve essere seguito dal carattere specificato nel registro S3, che è il cosiddetto "fine linea".
solitamente tale valore è il carriage return, ovvero il carattere ascii 13, ma può appunto essere modificato cambiando il valore di S3.
forse non è il tuo problema perché il numero lo fa, quindi il comando ATDT lo prende...

comunque non ho capito se devi mandare un comando AT oppure un comando che viene interpretato dal dispositivo remoto

leon84
11-04-2007, 22:01
attenzione perché il comando AT deve essere seguito dal carattere specificato nel registro S3, che è il cosiddetto "fine linea".
solitamente tale valore è il carriage return, ovvero il carattere ascii 13, ma può appunto essere modificato cambiando il valore di S3.
forse non è il tuo problema perché il numero lo fa, quindi il comando ATDT lo prende...

comunque non ho capito se devi mandare un comando AT oppure un comando che viene interpretato dal dispositivo remoto

un comando da far interpretare al dispositivo remoto una volta stabilita la connessione

recoil
12-04-2007, 08:07
ah ecco
dovresti fare un dump dei dati in arrivo dall'altra parte.