Я пытаюсь реализовать упаковщик Java для RCSwitch в Raspberry Pi. Он работает нормально, пока метод захвата не достигнет 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);
}
}
Теперь я в замешательстве и не могу придумать решение.
Заранее спасибо.
Задача ещё не решена.