我正在尝试在Raspberry Pi中为RCSwitch实现一个java包装器。它工作正常,直到抓取方法达到第80次迭代。然后它放慢速度,我无法弄清楚原因。使用值返回需要超过5分钟。
我试图找出问题所在,但我并没有记忆,树莓仍然有超过300mega。尽管如此,我尝试使用以下参数运行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);
}
}
现在我很困惑,无法想出解决方案。
提前致谢。