Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino ide 我试图解析从LoRa.readString()发送的一些传感器数据_Arduino Ide - Fatal编程技术网

Arduino ide 我试图解析从LoRa.readString()发送的一些传感器数据

Arduino ide 我试图解析从LoRa.readString()发送的一些传感器数据,arduino-ide,Arduino Ide,我需要在LoRa接收器中解析从LoRa发送者接收的se消息。 我在打印序列中的所有字符串时没有任何问题 例如:“29.561004,20” 但是我无法解析数组中的“String LoRaData=LoRa.readString();”以将它们作为单独的数据发送,因此在Oled屏幕上使用它们来发送MQTT 我的实际代码是: #include <SPI.h> #include <LoRa.h> #include <Wire.h> #include "SSD13

我需要在LoRa接收器中解析从LoRa发送者接收的se消息。 我在打印序列中的所有字符串时没有任何问题 例如:“29.561004,20” 但是我无法解析数组中的“String LoRaData=LoRa.readString();”以将它们作为单独的数据发送,因此在Oled屏幕上使用它们来发送MQTT

我的实际代码是:

#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>  
#include "SSD1306.h" 
#include "images.h"

#define SCK     5    // GPIO5  -- SX1278's SCK
#define MISO    19   // GPIO19 -- SX1278's MISO
#define MOSI    27   // GPIO27 -- SX1278's MOSI
#define SS      18   // GPIO18 -- SX1278's CS
#define RST     14   // GPIO14 -- SX1278's RESET
#define DI0     26   // GPIO26 -- SX1278's IRQ(Interrupt Request)
#define BAND    868E6

SSD1306 display(0x3c, 4, 15);
String rssi = "RSSI --";
String packSize = "--";
String packet ;

void logo(){
  display.clear();
  display.display();
}

void loraData(){
  display.clear();
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.setFont(ArialMT_Plain_24);
  display.drawString(0 , 15 , "Received "+ packSize + " bytes");
  display.drawStringMaxWidth(0 , 26 , 128, packet);
  display.drawString(0, 0, rssi);  
  display.display();
  }

void cbk(int packetSize) {
  packet ="";
  packSize = String(packetSize,DEC);
  for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); 
  }
  rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ;
  loraData();
}

void setup() {
  pinMode(16,OUTPUT);
  pinMode(2,OUTPUT);
  digitalWrite(16, LOW);    // set GPIO16 low to reset OLED
  delay(50); 
  digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high

  Serial.begin(9600);
  while (!Serial);
  Serial.println();
  Serial.println("LoRa Receiver Callback");
  SPI.begin(SCK,MISO,MOSI,SS);
  LoRa.setPins(SS,RST,DI0);  
  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }

  //LoRa.onReceive(cbk);
  LoRa.receive();
  Serial.println("init ok");
  display.init();
  display.flipScreenVertically();  
  display.setFont(ArialMT_Plain_16);
  delay(1500);
}

void loop() {
  display.clear();
  display.setTextAlignment(TEXT_ALIGN_LEFT);

  // try to parse packet
  int packetSize = LoRa.parsePacket();
if (packetSize) {
  // received a packet
  Serial.print("Recived packet '");

  // read packet
  while (LoRa.available()) {
  String LoRaData = LoRa.readString();
  Serial.print(LoRaData); 
  display.drawString(0, 0,  "Reciving.... ");
  display.drawString(0, 20, "message: ");
  display.drawString(0, 40, String(LoRaData));
  display.display();
  delay(1500);
}

// print RSSI of packet

  Serial.print("' with RSSI ");
  Serial.println(LoRa.packetRssi());
  String packetRssi_to_send = String(LoRa.packetRssi());
  display.clear();
  display.drawString(0, 0,  "Sinial Quality ");
  display.drawString(0, 40, "Rssi = ");
  display.drawString(50, 40, String(packetRssi_to_send));
  display.display();
  delay(1500);
  }
}
#包括
#包括
#包括
#包括“SSD1306.h”
#包括“images.h”
#定义SCK 5//GPIO5--SX1278的SCK
#定义味噌19//GPIO19--SX1278的味噌
#定义MOSI27//GPIO27--SX1278的MOSI
#定义SS 18//GPIO18--SX1278的CS
#定义RST 14//GPIO14--SX1278的重置
#定义DI0 26//GPIO26--SX1278的IRQ(中断请求)
#定义频带868E6
SSD1306显示器(0x3c,4,15);
字符串rssi=“rssi--”;
字符串packSize=“--”;
字符串包;
void logo(){
display.clear();
display.display();
}
无效数据(){
display.clear();
display.setTextAlignment(文本左对齐);
display.setFont(ArialMT_Plain_24);
display.drawString(0,15,“已接收”+packSize+“字节”);
display.drawStringMaxWidth(0,26,128,数据包);
显示.抽绳(0,0,rssi);
display.display();
}
无效cbk(整数包大小){
packet=“”;
packSize=字符串(packetSize,DEC);
对于(inti=0;i
我怀疑
LoRa.readString()
API有问题。我改变了:

String LoRaData = LoRa.readString();

例如:

// wait for LoRa packet
int packetSize = LoRa.parsePacket();
if (packetSize)
{
Serial.println("Paquet recu ");
String LoRaData ="";
while (LoRa.available()) 
{ // tant que le paquet LoRa arrive
LoRaData = LoRaData+(char)LoRa.read();
}
// wait for LoRa packet
int packetSize = LoRa.parsePacket();
if (packetSize)
{
Serial.println("Paquet recu ");
String LoRaData ="";
while (LoRa.available()) 
{ // tant que le paquet LoRa arrive
LoRaData = LoRaData+(char)LoRa.read();
}