Как эффективно обрабатывать входящее MQTT-сообщение с высокой частотой дискретизации (например, 100 Гц - 200 Гц) - PullRequest
1 голос
/ 30 сентября 2019

Я отправляю данные датчика с датчика Bosch XDK по протоколу MQTT в приложение для Android. Все работает нормально, если частота дискретизации ниже 100 Гц. Однако, когда я увеличиваю эту частоту, приложение зависает и через несколько секунд перестает отвечать на запросы. Я считаю, что это может быть проблема оптимизации кода для приложения.

Это функция для обработки входящего

Это функция для обработки входящего сообщения MQTT:

public void updateSensorValues(String mqttMessage){

    try{
        JSONArray jsonArray = new JSONArray(mqttMessage);
        for(int i = 0;i<jsonArray.length();i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            jsonAccX.put(jsonObject.get("bma280_x"));
            jsonAccY.put(jsonObject.get("bma280_y"));
            jsonAccZ.put(jsonObject.get("bma280_z"));
            jsonGyrX.put(jsonObject.get("bmg160_x"));
            jsonGyrY.put(jsonObject.get("bmg160_y"));
            jsonGyrZ.put(jsonObject.get("bmg160_z"));
            jsonMagX.put(jsonObject.get("bmm150_x"));
            jsonMagY.put(jsonObject.get("bmm150_y"));
            jsonMagZ.put(jsonObject.get("bmm150_z"));
        }




    } catch (JSONException e){
        System.out.println("Error " + e.getMessage());

    }
}

Может кто-нибудь подсказать мне, если это проблема оптимизации в Java, или я должен получать данные реже?

Также важно упомянуть, что датчик XDK позволяет передавать только 997 символов за раз, поэтому я имеюпубликовать данные быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...