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 - цифровая информация.