RA-02 SX1278 LoRa数据输出中的奇怪行为

时间:2017-12-24 11:40:40

标签: types arduino output lora

昨天我开始在Arduino上使用我的LoRa模块。我使用示例草图来了解它们的工作原理。现在我想检查接收到的值来做某些事情,比如打开和关闭LED。

我的问题是接收到的值与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 个答案:

答案 0 :(得分:0)

char result = char(buffer);
Serial.println(result);

您正在打印char,而不是小数值。所以是的,期望有单字节奇怪的字符。

uint8_t result = char(buffer);
Serial.println(result);

会给你一个良好的开端。