问题描述
目前,我尝试通过读取串行线路并通过 LoRa 发送输入来在一个 Heltec WIFI LoRa V2 和另一个之间发送数据包。
小数据包(如 30 字节)每次都可以工作,但随着数据包变大,数据包不会每次都收到,甚至永远不会收到。
所以我写了一个小的发送循环,我的发送者在每次迭代时发送一个数据包,每次都会变大 10 字节,令人惊讶的是,发送者收到了每个数据包(我尝试了直到 500 字节)。
在那之后,我想发送一个 80 字节的串行输入消息,但这不起作用。你知道这有什么问题吗?
void setup() {
// ... LoRa.begin(); ....
LoRa.onReceive(onReceive);
// ... LoRa.receive(); ...
}
void onReceive(int packetSize) { // uses the interrupt pin on the dio0
String packet = "";
packSize = String(packetSize,DEC);
for (int i = 0; i < packetSize; i++) {
packet += (char) LoRa.read();
}
Serial.println(packet);
delay(5);
} ```
``` // writer
boolean sendPacket (String packet) {
Serial.println("Send begin");
LoRa.beginPacket(false); // true: optional implicit mode (--> Set everything on both sides?!)
LoRa.setTxPower(14,RF_PACONfig_PASELECT_PABOOST);
LoRa.print(packet); // also LoRa.write(byte(,length));
LoRa.endPacket(false); // true: async mode: doas not wair until transmission is completed
delay(250);
// put the radio into receive mode
LoRa.receive(); // set redio back in receive mode
delay(750);
Serial.println("Send end");
return true; // will be changed
}
void loop(){
while(Serial.available() > 0 ){
delay(2); //delay to allow byte to arrive in input buffer
String text = Serial.readString();
digitalWrite(LED,HIGH); // turn the LED on (HIGH is the voltage level)
boolean packetSent = false;
while (!packetSent) {
packetSent = sendPacket(text);
if (packetSent) {
Serial.print("Packet has been sent: ");
Serial.println(text);
} else {
Serial.print("Retry sending packet: ");
Serial.println(text);
}
}
digitalWrite(LED,LOW); // turn the LED off (HIGH is the voltage level)
}
} ```
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)