我正在尝试在 Raspberry Pi 中为 RCSwitch 实现一个 java 包装器。它工作正常,直到抓取方法达到第 80 次迭代。然后它变慢了,我不知道为什么。返回值需要 5 分钟以上。我试图找出问题所在,但我并没有内存不足,覆盆子仍然有超过 300 兆。尽管如此,我还是尝试使用以下参数运行 JVM:-Xms5m -Xmx5m
但程序在第 80 次迭代时仍然变慢,所以我认为这不是内存问题。我的发件人仍然发送该值,因为如果我重新启动程序,它会再次工作,直到第 80 次迭代,所以这不是缺少输入数据。
这是代码的java部分:
public class RCSwitchWrapper {
public native int recievedValue(int PIN);
static{System.loadLibrary("RCSwitchWrapper");}
public static void main(String[] args){
RCSwitchWrapper wrapper = new RCSwitchWrapper();
int counter=0;
while(true){
counter++;
int grabbedData = wrapper.recievedValue(2);
System.out.println(counter+" grabbed data: "+grabbedData);
}
}
}
代码的 C++ 部分:
#include "RCSwitch.h"
#include "RCSwitchWrapper.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
RCSwitch mySwitch;
JNIEXPORT jint JNICALL Java_RCSwitchWrapper_recieveValue(JNIEnv *env, jobject obj,jint PIN){
if(wiringPiSetup()==-1){
printf("wiringpi error \n");
return 0;
}
mySwitch = RCSwitch();
mySwitch.enableReceive(PIN);
while(1){
if(mySwitch.available()){
int value = mySwitch.getReceivedValue();
return value;
}
mySwitch.resetAvailable();
return(-1);
}
}
现在我很困惑,想不出解决办法。
提前致谢。