Я новичок.
Я занимаюсь разработкой программного кода для ESP8266. При этом RAW-код артефакта, который я хочу активировать, хранится в файле в SPIFFS. Пример файла, который я сохранил в SPIFFS:
3480, 1760, 400, 444, 424, 1308, 420, 444, 424, 444, 424, 440, 424, 440, 424, 444, 420, 444, 420, 444, 424, 444, 448, 444, 420, 444, 420, 448, 420, 1332, 400, 444, 420, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 420, 1332, 400, 1332, 396, 1312, 420, 444, 452, 440, 424, 1308, 420, 448, 420, 444, 420, 444, 420, 448, 420, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 448, 444, 420, 444, 424, 444, 420, 444, 420, 444, 420, 448, 420, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 420, 444, 420, 448, 448, 440, 424, 444, 420, 444, 420, 1336, 396, 1332, 400, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 10008, 3484, 1736, 404, 440, 424, 1308, 448, 448, 420, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 444, 420, 444, 420, 1332, 400, 444, 424, 440, 452, 444, 420, 444, 420, 444, 424, 440, 424, 444, 424, 1304, 424, 1332, 400, 1308, 424, 440, 424, 444, 420, 1332, 400, 444, 424, 440, 424, 440, 424, 444, 424, 440, 448, 444, 424, 440, 424, 444, 424, 440, 424, 444, 420, 444, 424, 440, 424, 444, 424, 440, 424, 440, 424, 444, 424, 1308, 420, 1308, 424, 1308, 424, 440, 452, 440, 424, 440, 428, 440, 424, 1308, 424, 1304, 424, 444, 424, 1304, 424, 444, 424, 440, 428, 440, 424, 440, 428, 436, 428, 436, 428, 440, 428, 436, 456, 436, 428, 1304, 424, 1308, 424, 440, 428, 436, 428, 440, 428, 1300, 428, 1304, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 452, 440, 424, 440, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 424, 440, 428, 440, 424, 1308, 424, 1300, 432, 1304, 452, 440, 424, 440, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 1328, 404, 1304, 428, 1304, 424, 440, 428, 436, 428, 440, 452, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 428, 436, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 1304, 452, 440, 428, 436, 428, 1304, 428, 436, 428, 440, 424, 440, 428, 1304, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 452, 440, 428, 436, 428, 436, 428, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 428, 1300, 428, 440, 424, 440, 428, 1300, 428, 440, 428, 436, 456, 1324, 408
ИК-код артефакта в коде без SPIFFS будет выглядеть так:
uint16_t powerOff[439] = {3480, 1760, 400, 444, 424, 1308, 420, 444, 424, 444, 424, 440, 424, 440, 424, 444, 420, 444, 420, 444, 424, 444, 448, 444, 420, 444, 420, 448, 420, 1332, 400, 444, 420, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 420, 1332, 400, 1332, 396, 1312, 420, 444, 452, 440, 424, 1308, 420, 448, 420, 444, 420, 444, 420, 448, 420, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 448, 444, 420, 444, 424, 444, 420, 444, 420, 444, 420, 448, 420, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 444, 420, 444, 420, 448, 448, 440, 424, 444, 420, 444, 420, 1336, 396, 1332, 400, 444, 420, 444, 424, 444, 420, 444, 420, 444, 424, 10008, 3484, 1736, 404, 440, 424, 1308, 448, 448, 420, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 440, 424, 444, 420, 444, 424, 444, 420, 444, 420, 1332, 400, 444, 424, 440, 452, 444, 420, 444, 420, 444, 424, 440, 424, 444, 424, 1304, 424, 1332, 400, 1308, 424, 440, 424, 444, 420, 1332, 400, 444, 424, 440, 424, 440, 424, 444, 424, 440, 448, 444, 424, 440, 424, 444, 424, 440, 424, 444, 420, 444, 424, 440, 424, 444, 424, 440, 424, 440, 424, 444, 424, 1308, 420, 1308, 424, 1308, 424, 440, 452, 440, 424, 440, 428, 440, 424, 1308, 424, 1304, 424, 444, 424, 1304, 424, 444, 424, 440, 428, 440, 424, 440, 428, 436, 428, 436, 428, 440, 428, 436, 456, 436, 428, 1304, 424, 1308, 424, 440, 428, 436, 428, 440, 428, 1300, 428, 1304, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 452, 440, 424, 440, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 424, 440, 428, 440, 424, 1308, 424, 1300, 432, 1304, 452, 440, 424, 440, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 1328, 404, 1304, 428, 1304, 424, 440, 428, 436, 428, 440, 452, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 428, 436, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 1304, 452, 440, 428, 436, 428, 1304, 428, 436, 428, 440, 424, 440, 428, 1304, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 452, 440, 428, 436, 428, 436, 428, 440, 428, 436, 428, 440, 424, 440, 428, 436, 428, 440, 428, 1300, 428, 440, 424, 440, 428, 1300, 428, 440, 428, 436, 456, 1324, 408};
Важно, чтобы вывод кода IR, хранящегося в SPIFFS, выглядел следующим образом, потому что библиотека IR должна быть в uint16_t
Но именно идея состоит в том, чтобы записать их в SPIFFS, чтобы они могли быть изменены в любое время и сэкономить место в ESP, потому что у меня не хватает памяти, и загружать код IR только тогда, когда он будет отправлен и необходимо.
Я попробовал следующее (это не сработало):
Первый тест:
bool SPIFFSCodes::loadPowerOff()
{
File file_id= SPIFFS.open("/powerOff", "r");
if (!file_id)
{
Serial.println("Failed to open powerOff file");
return false;
}
size_t size = file_id.size();
std::unique_ptr<char[]> buf(new char[size]);
file_id.readBytes(buf.get(), size);
uint16_t powerOff[439];
for (int i = 0; i != 439; i++)
{
powerOff[i] = 256*buf[2*i]+buf[2*i+1];
}
// show the data in console and check if it is correct:
for (int i = 0; i != 439; i++)
{
Serial.print(powerOff[i]);
Serial.print(", ");
}
irsend1.sendRaw(powerOff,439,38);
return true;
}
Второй тест:
bool SPIFFSCodes::loadPowerOff()
{
File file_id= SPIFFS.open("/powerOff", "r");
if (!file_id)
{
Serial.println("Failed to open powerOff file");
return false;
}
size_t size = file_id.size();
std::unique_ptr<char[]> buf(new char[size]);
file_id.readBytes(buf.get(), size);
uint16_t powerOff[439];
for (int i = 0; i != 439; i++)
{
powerOff[i] = buf[2*i]+64*buf[2*i+1];
}
// show the data in console and check if it is correct:
for (int i = 0; i != 439; i++)
{
Serial.print(powerOff[i]);
Serial.print(", ");
}
irsend1.sendRaw(powerOff,439,38);
return true;
}
Оба дали результаты с ошибочными значениями и очень высокими к тому, что должно быть. Мне нужно, чтобы выходные данные были в uint16_t, потому что это тот тип данных, который нужна ИК-библиотеке для отправки сигнала.
Надеюсь, вы мне поможете.
Джампаоло.