Ciao!
Sto facendo un programma per la comunicazione seriale tra un pc e uno switch ottico. IO mando comandi allo switch e leggo le risposte. Sembra facile, ma non sono capace di sincronizzare le operazioni di lettura/scrittura.
Più in dettaglio, non sono capace di fermare l´invio di comandi mentre lo switch risponde. Uno pseudo-codice, potrebbe essere il seguente.
codice:
public void exe() {
for (cmd: commandList) {
giveCommand(); // write string on port COM1, for example
waitForExecution();
}
}
public void read() { // implements SerialPortEventListener
readDataFromPort();
detectEndOfCommand(); // and warn waiting threads
}
Ho già implementato un metodo per rilevare la fine dell´esecuzione del comando, attraverso l´analisi dei dati entranti. Questo significa che so quando è ora di avvisare le trame in attesa, ma non sono capace di implementare la funzione stop/restart .
Sono quasi sicuro che debba usare metodi sincronizzazi e wait()/notify(), ma tutto quanto ho provato ha miseramente fallito. Ho provato anche a usare variabili di flag, invano. Non riesco a fermarlo adeguatamente.
Come si implementa?!?!?
Grazie.