Я использую ESP32 для отправки и получения 64-битных ИК-данных, так как позже я хочу перейти в отправку файла. Тем не менее, у меня есть проблемы с декодированием исходных отправленных данных. Пока я вкладывал 64-битные необработанные данные и даже через я могу получить продолжительность импульса, декодированные данные обычно представляют собой код мусора. < /P>
Это код:
'' '< /p>
#include
const byte IR_RECEIVE_PIN = 15;
const byte IR_SEND_PIN = 4;
//64 bit data being sent
const uint64_t rawData[] = {
4294967296, // 2^32
10000000000, // 10 billion
42949672950, // 10 × 32-bit max
68719476735, // 16 × 32-bit max
100000000000, // 100 billion
281474976710655 // 48-bit max
};
const int rawDataCount = sizeof(rawData) / sizeof(rawData[0]);
// IR carrier frequency in kHz
const uint8_t kHz = 38;
void setup() {
Serial.begin(115200);
delay(2000); // Give time for Serial Monitor to connect
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);
Serial.println(F("IR Custom Protocol Test"));
}
// Encode a 64-bit integer into a simple raw IR signal
void sendCustomRaw(uint64_t value) {
Serial.print(F("Sending value: "));
Serial.println(value);
const uint16_t pulseMark = 560; // standard pulse
const uint16_t space0 = 560; // space for '0'
const uint16_t space1 = 1690; // space for '1'
uint16_t rawBuffer[130]; // large enough for 64 bits * 2 + header
int i = 0;
// Header
rawBuffer[i++] = 9000;
rawBuffer[i++] = 4500;
// Encode bits from MSB to LSB
for (int bit = 63; bit >= 0; bit--) {
rawBuffer[i++] = pulseMark;
if (value & ((uint64_t)1 = sendInterval && currentIndex < rawDataCount) {
sendCustomRaw(rawData[currentIndex++]);
lastSendTime = millis();
IrReceiver.restartAfterSend(); // Prepare receiver again
}
}
"""
< /code>
Я попытался декодировать Hex, Binary и даже целого числа. Ничего из этого не сработало.
Подробнее здесь: https://stackoverflow.com/questions/795 ... -64-bit-va
У меня проблемы с декодированием IR-сигналов Rawdata, чтобы вернуться к 64-битной стоимости? ⇐ C++
Программы на C++. Форум разработчиков
1745252758
Anonymous
Я использую ESP32 для отправки и получения 64-битных ИК-данных, так как позже я хочу перейти в отправку файла. Тем не менее, у меня есть проблемы с декодированием исходных отправленных данных. Пока я вкладывал 64-битные необработанные данные и даже через я могу получить продолжительность импульса, декодированные данные обычно представляют собой код мусора. < /P>
Это код:
'' '< /p>
#include
const byte IR_RECEIVE_PIN = 15;
const byte IR_SEND_PIN = 4;
//64 bit data being sent
const uint64_t rawData[] = {
4294967296, // 2^32
10000000000, // 10 billion
42949672950, // 10 × 32-bit max
68719476735, // 16 × 32-bit max
100000000000, // 100 billion
281474976710655 // 48-bit max
};
const int rawDataCount = sizeof(rawData) / sizeof(rawData[0]);
// IR carrier frequency in kHz
const uint8_t kHz = 38;
void setup() {
Serial.begin(115200);
delay(2000); // Give time for Serial Monitor to connect
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);
Serial.println(F("IR Custom Protocol Test"));
}
// Encode a 64-bit integer into a simple raw IR signal
void sendCustomRaw(uint64_t value) {
Serial.print(F("Sending value: "));
Serial.println(value);
const uint16_t pulseMark = 560; // standard pulse
const uint16_t space0 = 560; // space for '0'
const uint16_t space1 = 1690; // space for '1'
uint16_t rawBuffer[130]; // large enough for 64 bits * 2 + header
int i = 0;
// Header
rawBuffer[i++] = 9000;
rawBuffer[i++] = 4500;
// Encode bits from MSB to LSB
for (int bit = 63; bit >= 0; bit--) {
rawBuffer[i++] = pulseMark;
if (value & ((uint64_t)1 = sendInterval && currentIndex < rawDataCount) {
sendCustomRaw(rawData[currentIndex++]);
lastSendTime = millis();
IrReceiver.restartAfterSend(); // Prepare receiver again
}
}
"""
< /code>
Я попытался декодировать Hex, Binary и даже целого числа. Ничего из этого не сработало.
Подробнее здесь: [url]https://stackoverflow.com/questions/79584957/im-having-trouble-with-decoding-the-rawdata-ir-signals-to-back-to-the-64-bit-va[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия