Исключение NullPointerException с Websocket в эскизе обработки - PullRequest
0 голосов
/ 15 мая 2018

Я настроил пример в обработке, который работает нормально, используя библиотеку распознавания голоса http://florianschulz.info/stt/

Я пытаюсь отправить содержимое строки в функцию Draw, и это вызывает ошибку NullException, когда вы не определяете значение по умолчанию в void setup

Сначала я подумал, что должен установить глобальную строковую MSG, но, как бы я ни пытался ее определить, она не обновит функцию рисования чем-либо, кроме слова test. Это потому, что я определил его внутри void setup () как значение «test»

Однако, если вы удалите слово test, оно снова вызовет ошибку исключения null.

Что происходит, так это то, что по умолчанию String msg проходит проверку значения, но как только вы говорите в микрофон ноутбука, консоль должна обновить слово или предложение с помощью текста (); функция и в свою очередь появляются в окне Java обработки с обновленным словом.

import websockets.*;
WebsocketServer socket;
PFont f;
String msg;

    void setup() {

      socket = new WebsocketServer(this, 1337, "/p5websocket");
      noLoop();
      size(480, 120);
      f = createFont("Arial",16,true); // Arial, 16 point, anti-aliasing on 
       if (msg == null){
         msg="test";
         println(msg);
      }
      else{
        println(msg);

      }
    }

    void draw() {
      background(100);
      textFont(f,36);
      fill(180);  
      println(msg);
      text(msg, 10, 10, 70, 80);// Text wraps within text box

    }

    void webSocketServerEvent(String msg){

      println(msg);

    }

1 Ответ

0 голосов
/ 16 мая 2018

Вы спрашиваете, как присвоить переменной msg уровня эскиза значение аргумента msg, переданного в функцию webSocketServerEvent()?

Обратите внимание, что если они имеют одинаковое имя, это не означает, что они являются одной и той же переменной. Это две разные переменные в двух разных областях. Если вы хотите сослаться или переназначить переменную уровня эскиза, вы можете использовать ключевое слово this для устранения неоднозначности:

void webSocketServerEvent(String msg){
  this.msg = msg;
  println(msg);
}

Или вы можете просто переименовать одну из переменных:

void webSocketServerEvent(String webSocketMessage){
  this.msg = webSocketMessage;
  println(msg);
}
...