Nextion wept, помогите, ошибки записи в ЕЕПРОМ экрана.

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

Сделал процедуру записи в ЕЕПРОМ экрана НЕКСТИОН.

В терминале вижу что все пишется как надо, на практике почти правильно пишется каждая 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();
                                              
}

 

 

в терминале все нормально

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

терминал

Nextion check port
ED F2 29 0 0 0 F8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
....................Start FAST
 Send nearest event to Nextion :
FE,FF,FF,FF,! 16,1 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 20,19 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 24,32 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 36,20 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 40,18 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 32,41 !,FD,FF,FF,FF,
SWITCH LEVEL:41
Set temp to display

....

Nextion check port
ED F2 29 0 0 0 F8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
....................Start FAST
 Send nearest event to Nextion :
FE,FF,FF,FF,! 16,1 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 20,19 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 24,32 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 36,20 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 40,18 !,FD,FF,FF,FF,
! 32,41 !,ED,F2,29,0,0,0,F8,FE,FF,FF,FF,
SWITCH LEVEL:41

2й пример, может быть такая ошибка вывода, но все запишется правильно, видимо перегрузка буфера терминала.

Где я допустил ошибку?

Может какую то задержку или сброс не предусмотрел?

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

и обнуление ни разу правильно не записал, в полях 32, и температура 33.

Nextion check port
ED F2 A 0 0 0 F8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
............. clear nearest event
 Send nearest event to Nextion :
FE,FF,FF,FF,! 16,0 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 20,0 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 24,0 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 36,0 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 40,0 !,FD,FF,FF,FF,
FE,FF,FF,FF,! 32,10 !,FD,FF,FF,FF,
SWITCH LEVEL:10

 

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016
Нащел такое.
Hi Patrick, Yes, all right so, I am doing just that. ;-) The data I wrote are the 4 bytes of the number 1234567 in low-endian format. In the meantime I found out that a delay(100) after the wept is sufficient for the rest to result in the expected data. Only if I will send the rept immediately upon the return from the wept command the FD FF FF FF pattern can be observed. No big issue, but I found it interesting that there seem to be more return codes than are published in the wiki.
 

 

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

А ларчик просто открывался :( Из за мелких ошибок теряется уйма времени.

serial.print - выводит текстовые строки

serial.write - цифровая информация.