首页 > 解决方案 > 处理草图中带有 Websocket 的 NullPointerException

问题描述

我在处理中设置了一个示例,该示例通过使用语音识别库http://florianschulz.info/stt/运行良好

我正在尝试将字符串的内容发送到 Draw 函数,当您未在 void setup 中定义默认值时,它会导致 NullException 错误

首先,我认为我应该设置一个全局字符串 msg,但无论我如何尝试定义它,它都不会使用除了单词 test 之外的任何内容更新 draw 函数。这是因为我在 void setup() 中将其定义为具有值“test”

但是,如果您删除单词 test,它会再次导致 null 异常错误。

发生的情况是 String msg 默认为 value test 但是一旦你对着笔记本电脑的麦克风说话,控制台应该通过 text() 更新单词或句子;函数,然后用更新的单词出现在处理 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);

    }

标签: websocketnullpointerexceptionprocessing

解决方案


您是否在问如何将草图级msg变量分配给msg传递给webSocketServerEvent()函数的参数值?

请注意,仅仅因为它们具有相同的名称并不意味着它们是相同的变量。它们是两个不同范围内的两个不同变量。如果要引用或重新分配草图级变量,可以使用this关键字来消除歧义:

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

或者您可以只重命名变量之一:

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

推荐阅读