Nextion wept, помогите, ошибки записи в ЕЕПРОМ экрана.
- Войдите на сайт для отправки комментариев
Пнд, 29/01/2018 - 08:02
Сделал процедуру записи в ЕЕПРОМ экрана НЕКСТИОН.
В терминале вижу что все пишется как надо, на практике почти правильно пишется каждая 3я запись, где то 2 раза вобще не то, в нужных полях цифры 32 и 33 вместо нужных мне, правильная запись, все равно 4 и 5й байт неправильные, 6й байт, из правильной записи периодически или правильный или нет.
//------------------------------------------------------------------------------------------- // v6 Write EEPROM //------------------------------------------------------------------------------------------- void NextionWriteEEPromByte( byte adr, byte val){ byte data; //Serial.print(F("Write Nextion EEPROM - ")); delay(10); // Transparent Data Mode (used by addt and wept commands) //1.MCU sending to Nextion 1.MCU sends command. ie: wept 30,20ÿÿÿ or addt 1,0,320ÿÿÿ NextionSerial.print ( F("wept ")); NextionSerial.print ( adr ); NextionSerial.print ( F(",")); NextionSerial.print ( 4 ); NextionSerial.write(0xff); NextionSerial.write(0xff); NextionSerial.write(0xff); // 2.Nextion requires ~5ms to prepare for transparent mode data transfer delay(10); // 3.Nextion sends “Ready” 0xFE 0xFF 0xFF 0xFF Return Data (see 7.30) while(NextionSerial.available()){ data = NextionSerial.read(); delay(10); Serial.print(data,HEX); Serial.print(","); } //4.MCU can now send specified quantity (20) of raw bytes to Nextion NextionSerial.print ( val ); Serial.print("! "); Serial.print(adr); Serial.print(","); Serial.print(val); Serial.print(" !,"); NextionSerial.print ( 0); NextionSerial.print ( 0); NextionSerial.print ( 0); //5.Nextion receives raw bytes from MCU until specified quantity (20) is received //6.Nextion sends “Finished” 0xFD 0xFF 0xFF 0xFF Return Data (see 7.29) //7.MCU and Nextion can proceed to next command while( !NextionSerial.available() ){} data = NextionSerial.read(); Serial.print(data,HEX); Serial.print(","); delay(10); while(NextionSerial.available()){ data = NextionSerial.read(); delay(10); Serial.print(data,HEX); Serial.print(","); } Serial.println(); }
в терминале все нормально
терминал
2й пример, может быть такая ошибка вывода, но все запишется правильно, видимо перегрузка буфера терминала.
Где я допустил ошибку?
Может какую то задержку или сброс не предусмотрел?
и обнуление ни разу правильно не записал, в полях 32, и температура 33.
А ларчик просто открывался :( Из за мелких ошибок теряется уйма времени.
serial.print - выводит текстовые строки
serial.write - цифровая информация.