Re: Arduino Mega Server для ESP32
Добавлено: Сб июл 15, 2017 9:22 pm
Не, не запускал, со своим развлекаюсь.
СпойлерПоказать
что такое NOP?error: 'NOP' was not declared in this scope
serghei писал(а):И работа с SD картой то же по другому организована.Пока файлы записать на карту не знаю как.
Код: Выделить всё
File file = SD.open("/test.txt", w);
file.print("test");
file.close();
мне честно говоря сложно представить использование NOP в таком контексте ,загляни в spiTransЯ подразумеваю , что NOP , это нет операции
Я в шоке. В дистрибутиве AMS для ESP32, в модуле SD есть код для любых манипуляций с файлами. АМС его не использует и я его закомментировал, но оставил (видать специально для вас).И работа с SD картой то же по другому организована.Пока файлы записать на карту не знаю как.
Код: Выделить всё
timeStamp();
Serial.print("GLOBAL Init DONE (");
Serial.print(millis() / 1000);
Serial.println(F("s)\n"));
timeStamp();
Serial.print("AMS WORK ");
//printFreeMem();
Serial.println();
MessText = "Перезапуск AMS"; // текст сообщения
MessLoger(String (MessText), String(Info)); // тип сообщения
} // setup
Код: Выделить всё
#ifdef FEATURE_LEDS
initLeds();
#endif
#ifdef FEATURE_KEYS
initKeys();
#endif
#ifdef ROBOTDYN_FEATURE
initRobotdyn();
#endif
#ifdef FEATURE_DHT
initDHT();
#endif
printInitDone();
//============================================
MessText = "Перезапуск AMS_ESP32";
MessLoger(String (MessText), String(Info));
//==============================================
} // setup
Код: Выделить всё
void printInitDone() {
Serial.print(F("GLOBAL Init DONE (")); Serial.print(millis() / 1000); Serial.println(F("s)"));
Serial.println();
Serial.println(F("AMS WORK"));
timeStamp(); printFreeMem("");
//============================================
//MessText = "Перезапуск AMS_ESP32";
//MessLoger(String (MessText), String(Info));
//==============================================
}
// Lifer
byte lifer;
Код: Выделить всё
/*
Modul Message ver 0.1
part of Arduino Mega Server project
Модуль архивных сообщений
для Ардуино Мега Сервер
*/
/* Создает запись в файле *.csv
* Необходимо передать функции:
* MessText - название сообщения
* MessType - тип сообщения
*/
void MessLoger(String MessText, String MessType){
// собираем Имя путь и имя файла
String MessName;
//MessName+="/Alarm/";
if(day()<10)
MessName+="0"+String(day(),DEC);
else
MessName+=String(day(),DEC);
if(month()<10)
MessName+="-0"+String(month(),DEC);
else
MessName+="-"+String(month(),DEC);
MessName+="-"+String(year()-2000,DEC);
MessName+=".csv";
File file = SD.open(String (MessName), FILE_WRITE);
if(file){
if(day() < 10) {file.print('0');}
file.print(String (day()));
file.print("-");
if(month() < 10) {file.print('0');}
file.print(String (month()));
file.print("-");
file.print( String (year()));
file.print(",");
if(hour() < 10) {file.print('0');}
file.print( String (hour()));
file.print(":");
if(minute() < 10) {file.print('0');}
file.print(String (minute()));
file.print(":");
if(second() < 10) {file.print('0');}
file.print(String (second()));
file.print(",");
file.print( String (MessText));
file.print(",");
file.println( String (MessType));
file.close();
}
else{}
}
Описание решения проблемы.serghei писал(а):Я подразумеваю , что NOP , это нет операции. Тут засада для меня гораздо глубже. Для 8266 я просто скопировал код для NRF24 и вставил в AMS и все скомпилировалось и заработало.
С ЕСП32 такой фокус не сработал из-за <avr/pgmspace.h> и других не соответстрий в драйверах.Как переписывать библиотеки под дрова я пока не знаю.
Проблема здесь в том, что библиотека ESP32 и RF24 имеет одно и то же имя макроса, NOP так что компилятор не знает, что заменить где.
В этом случае проще сменить библиотеку RF24, чем ESP32, потому что она появляется меньше раз и никогда не является хорошей идеей переименовать что-нибудь из ядра ESP32
Таким образом, в RF24 он объявлен RF24-master\nRF24L01.h и используется только в строке 176 файла RF24-master\RF24.cpp, одним из способов является переименование этого макроса, а другой способ просто заменить это имя идентификатора на значение напрямую.
Заменил и посыпались ошибки компилятораВы можете переименовать «NOP» во всю библиотеку RF24
или
просто удалить его и заменить: status = SPI.transfer( NOP );на status = SPI.transfer( 0xFF );
И целый букет дальше.nrf24.ino: In function 'void setNotRequired(Sender*)':
nrf24.ino:104:4: error: invalid use of incomplete type 'struct Sender'
arduino_mega_server_esp32sd.ino:208:28: note: forward declaration of 'struct Sender'
nrf24.ino: In function 'void setPacketType(Sender*, byte)':