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.
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 .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 }
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.

Rispondi quotando