У меня проблемы с декодированием IR-сигналов Rawdata, чтобы вернуться к 64-битной стоимости?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 У меня проблемы с декодированием IR-сигналов Rawdata, чтобы вернуться к 64-битной стоимости?

Сообщение 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 и даже целого числа. Ничего из этого не сработало.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -64-bit-va
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»