Che accade all'apertura del serial monitor???

Buongiorno ragazzi. Ho un problema stupido che credevo di aver risolto eliminando l’autoreset invece che con il condensatore eliminando il ponticello fisicamente (in sostanza potrei anche tenermelo ma vorrei risolvere).
In pratica il problema si presenta solamente al riavvio del computer. Apro la mia pagina web, dò i comandi e questi non rispondono come dovrebbero, come se cliccassi sui tasti a casaccio. Allora cosa faccio. Apro l’ide, apro il serial monitor, lo richiudo e tutto inizia a funzionare correttamente sino a che non spengo il pc e lo riavvio.
Ho provato anche prima di iniziare il ciclo di lettura dalla seriale a fare un while (serial.available()){ Serial.read;} ma non è servito a nulla. L’unica cosa che funziona è l’apertura e la chiusura del monitor seriale. Secondo me manda qualche segnale di sincronizzazione all’arduino che la php serial class non manda, e una volta sincronizzato tutto funziona correttamente. Per questo vi chiedo cosa accade esattamente quando apro il serial monitor, che cosa viene inviato all’arduino.
Ho provato anche a fare un serial print di quello che arriva all’arduino e praticamente in entrata mi trovo quello che l’arduino risponde al server web. Apro e chiudo il monitor seriale e il problema svanisce. Ma vorrei eliminarlo e poter riavviare il pc senza dover aprire e chiudere. Sto diventando matto.
Grazie a tutti in anticipo.

Lollo82:
Apro la mia pagina web, dò i comandi e questi non rispondono come dovrebbero, come se cliccassi sui tasti a casaccio. Allora cosa faccio. Apro l’ide, apro il serial monitor, lo richiudo e tutto inizia a funzionare correttamente sino a che non spengo il pc e lo riavvio.

Mi pare abbastanza ovvio che il problema è lato web e non certo lato Arduino, il serial monitor non fa altro che aprire la comunicazione seriale tramite la relativa porta virtuale, non invia nulla ad arduino e non si aspetta nulla che non siano i messaggi inviati dallo sketch.
Se da web non dialoghi con Arduino senza prima aver usato il monitor seriale significa che la tua pagina web non apre correttamente la porta seriale.

astrobeed:
Mi pare abbastanza ovvio che il problema è lato web e non certo lato Arduino, il serial monitor non fa altro che aprire la comunicazione seriale tramite la relativa porta virtuale, non invia nulla ad arduino e non si aspetta nulla che non siano i messaggi inviati dallo sketch.
Se da web non dialoghi con Arduino senza prima aver usato il monitor seriale significa che la tua pagina web non apre correttamente la porta seriale.

Ma perchè una volta che apro e chiudo il serial monitor (non invio nulla tramite serial monitor) tutto funziona correttamente??? Anche se stacco e riattacco l'arduino. Succede soltanto al riavvio del pc. Ad ogni sessione la pagina web apre la comunicazione seriale e alla fine dell'invio dei dati la richiude. Ho provato a eliminare la chiusura e non è cambiato nulla. Se non la aprisse correttamente non dovrebbe capitare anche durante la sessione??? Invece ho provato a tenere acceso il pc per giorni e in vari momenti del giorno ho provato a usarlo e ha sempre risposto correttamente. Il problema si presenta al riavvio del pc. Non manda nemmeno un segnale di allineamento??? Nulla di nulla??? Ci sto diventando matto...

Lollo82:
Succede soltanto al riavvio del pc. Ad ogni sessione la pagina web apre la comunicazione seriale e alla fine dell'invio dei dati la richiude.

Un conto è aprire una porta seriale, un contro è inizializzarla, sono due cose diverse, il serial monitor di Arduino fa tutte e due le cose, prima inizializza la porta e poi la apre, o chiude, probabilmente il tuo codice lato web riesce solo ad aprire/chiudere la porta seriale ma non ad inizializzarla a freddo.

astrobeed:
Un conto è aprire una porta seriale, un contro è inizializzarla, sono due cose diverse, il serial monitor di Arduino fa tutte e due le cose, prima inizializza la porta e poi la apre, o chiude, probabilmente il tuo codice lato web riesce solo ad aprire/chiudere la porta seriale ma non ad inizializzarla a freddo.

Ecco quello che volevo sentire!!! Quello che probabilmente è il problema. E... Forse la domanda è da cento milioni di dollari ma come si inizializza??? Cioè vorrei provare a modificare la classe per fargliela anche inizializzare. Ma... In che consiste l'inizializzazione???

Non è che con inizializzare la porta intendi questo???

define("PORT","/dev/ttyACM0");
 include "php_serial.class.php";
    $serial = new phpSerial;
    $serial->deviceSet(PORT);
        $serial->confBaudRate(9600);
        $serial->confParity("none");
        $serial->confCharacterLength(8);
        $serial->confStopBits(1);
        $serial->confFlowControl("none");

Lollo82:
Non è che con inizializzare la porta intendi questo???

Purtroppo con il php non posso esserti d'aiuto, non lo uso, uso solo html 5 e nodejs per il lato web.

astrobeed:
Purtroppo con il php non posso esserti d'aiuto, non lo uso, uso solo html 5 e nodejs per il lato web.

Tranquillo ci mancherebbe. Intendevo solo chiederti se con inizializzare la porta intendi semplicemente impostare il baudrate la parità, la lunghezza del carattere ecc. Perchè se intendi che il serial monitor fa quello. Anche la serial class lo fa. Ma non capisco cosa il serial monitor faccia in più.
Ho provato anche a scaricare gtkterm, e sino a che lo tengo aperto la comunicazione avviene correttamente (ovviamente non leggo le risposte sulla pagina web, ma la comunicazione avviene correttamente) lo chiudo e riniziano i problemi. Mentre col serial monitor una volta aperto e richiuso il problema svanisce completamente sino al riavvio del computer. Mi sfugge qualcosa ma non capisco cosa. Che palle. :disappointed_relieved:

Lollo82:
Mi sfugge qualcosa ma non capisco cosa. Che palle. :disappointed_relieved:

Dovresti provare ad usare uno sniffer per le comunicazioni seriali, permette di vedere esattamente quello che succede mentre i device dialogano tra loro, inclusi i vari comandi low level, in questo modo puoi capire cosa non fa il codice php che invece fa il serial monitor.

astrobeed:
Dovresti provare ad usare uno sniffer per le comunicazioni seriali, permette di vedere esattamente quello che succede mentre i device dialogano tra loro, inclusi i vari comandi low level, in questo modo puoi capire cosa non fa il codice php che invece fa il serial monitor.

Ok provo quello!!!

astrobeed:
Dovresti provare ad usare uno sniffer per le comunicazioni seriali, permette di vedere esattamente quello che succede mentre i device dialogano tra loro, inclusi i vari comandi low level, in questo modo puoi capire cosa non fa il codice php che invece fa il serial monitor.

Ciao Astro abbi pazienza. Hai mica qualche nome di sniffer da poter installare su ubuntu 14.04 così stasera appena arrivo a casa dal lavoro provo a fare qualcosa??? Ho cercato qualcosina ma non ho trovato molto.
Colgo l'occasione anche per ringraziarti di tutto.
Lorenzo.

Lollo82:
Ciao Astro abbi pazienza. Hai mica qualche nome di sniffer da poter installare su ubuntu 14.04

Per Ubuntu no, io con Windows uso quello di Eltima, è a pagamento però c'è la trial che puoi usare per fare questo test.