Ciao a tutti,
Sto usando da qualche tempo un display LCD touch 7" della 4D System , la versione gen4-ulcd-70DT , pilotato da un Arduino Mega , Il display e la relativa libreria di gestione funzionano bene finchè la comunicazione con il display è perfetta, se pero' per qualche ragione il display non risponde ( ad esempio togliendo alimentazione per un istante al solo display) la libreria entra in un loop che lagga il restante codice e anche se la comunicazione viene ripristinata e il display di nuovo resettato tramite il pin di reset questo lag permane.
Modificando il parametro Timeout nella libreria da 500 ms a 50 ms questo lag diminuisce ovviamente ma dopo circa 4 secondi che il display non risponde ho addirittura un inaspettato reset del micro a volte.
la parte di libreria ( genieArduino ) che suppongo causi il problema è:
///////////////// Genie::FlushSerialInput ///////////////////
//
// Removes and discards all characters from the currently
// used serial port's Rx buffer.
//
void Genie::FlushSerialInput(void) {
while (deviceSerial->read() >= 0);
}
/////////////////////// Resync //////////////////////////
//
// This function does nothing for RESYNC_PERIOD to allow the display
// time to stop talking, then it flushes everything so the link
// can start again.
//
// Untested, will need work I'm sure.
//
void Genie::Resync (void) {
//for (long timeout = millis() + RESYNC_PERIOD ; millis() < timeout;) {};
FlushSerialInput();
FlushEventQueue();
Timeouts = 0;
linkCount = 0;
LinkState = &LinkStates[0];
*LinkState = GENIE_LINK_IDLE;
}
Si accetta qualsiasi suggerimento
ViSi-Genie-Arduino-Library-master.zip (38.3 KB)