RA-02 SX1278 LoRa странное поведение при выводе данных
Вчера я начал работать с моими модулями LoRa на Arduino. Я использовал примеры эскизов, чтобы понять, как они работают. Теперь я хочу проверить полученные значения, чтобы сделать определенные вещи, такие как включение и выключение светодиодов.
Моя проблема в том, что полученные значения верны с исходным эскизом библиотеки LoRa, но начинают ошибаться, как только я пытаюсь сохранить их в переменных.
Вот код, который я написал, чтобы получить полученные значения.
#include <SPI.h>
#include <LoRa.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet '");
byte buffer[packetSize];
int index = 0;
// read packet
while (LoRa.available()) {
Serial.println((char)LoRa.read());
buffer[index] = LoRa.read();
index++;
}
char result = char(buffer);
Serial.println(result);
}
}
Примечание: не все из этого моего кода. Я частично взял пример эскиза, чтобы выручить меня.
Вывод консоли выглядит следующим образом:
Received packet '3' with RSSI -73
⸮
Received packet '4' with RSSI -85
⸮
Received packet '5' with RSSI -84
⸮
...
Received packet '8' with RSSI -83
⸮
Received packet '9' with RSSI -83
⸮
Received packet '1' with RSSI -82
⸮
Отправитель не делает ничего особенного, кроме как считать до 16, а затем начать с начала. Это просто очень простая задача, но, поскольку я не очень знаком с этой техникой, я не понимаю, как заставить это работать. Это означает, что я получаю значения вместо ´?´. Вторая проблема заключается в том, что числа больше 10 сокращаются до 1.
Я надеюсь, что вы можете оказать мне некоторую конструктивную помощь или хотя бы намеки, как я мог бы сделать эту работу.
1 ответ
char result = char(buffer);
Serial.println(result);
Вы печатаете char
, не десятичное значение. Так что да, ожидайте иметь странные однобайтовые символы.
uint8_t result = char(buffer);
Serial.println(result);
Даст вам преимущество.