NullPointerException
- Войдите на сайт для отправки комментариев
Сб, 01/02/2014 - 16:34
import processing.net.*; Client client; String IP = "192.168.1.10"; int port = 80; color off = color(255, 255, 255); color Ron = color(255, 0, 0); color Gon = color(0, 255, 0); color Bon = color(0, 0, 255); color font1 = off; color font2 = off; color font3 = off; int x = 1280; int y = 720; int button=3; int R=0; int G=0; int B=0; void setup() { size(x, y); Client client = new Client(this, IP, port); } void draw() { background(255); stroke(0); for (int i=1; i<button+1; i++) { switch (i) { case 1: fill(font1); rect(x-x*0.1, y*0.045, x*0.07, y*0.035); client.write("R001N1"); break; case 2: fill(font2); rect(x-x*0.1, y*0.045*2+10, x*0.07, y*0.035); client.write ("R001N2"); break; case 3: fill(font3); rect(x-x*0.1, y*0.045*3+20, x*0.07, y*0.035); client.write ("R001N3"); break; } } } void mousePressed() { for (int i=1; i<button+1; i++) { if (mouseX >= (x-x*0.1) && mouseX <= (x-x*0.1+x*0.07) && mouseY >= (y*0.045*i+((i-1)*10)) && mouseY <= (y*0.045*i+((i-1))*10+y*0.035)) { switch (i) { case 1: if (R == 0) { R = 1; font1 = Ron; } else { R = 0; font1 = off; } break; case 2: if (G == 0) { G = 1; font2 = Gon; } else { G = 0; font2 = off; } break; case 3: if (G == 0) { G = 3; font3 = Bon; } else { G = 0; font3 = off; } break; } } } }
Выдает ошибку NullPointerException в строках
client.write("R001N1"); client.write("R001N2"); client.write("R001N3");
В аналагичном примере ошибки здесь нет:
import processing.net.*; Client client; String data; boolean flag1 = false; boolean flag2 = false; void setup() { size(200, 200); client = new Client(this, "192.168.137.50", 80); // Connect to server on port 80 } void draw() { background(255); if (mouseOverRect() == true) { fill(204); if (flag1 == false) { client.write('H'); flag1 = true; flag2 = false; } } else { fill(0); if (flag2 == false) { client.write('L'); flag1 = false; flag2 = true; } } rect(50, 50, 100, 100); } boolean mouseOverRect() { return ((mouseX >= 50) && (mouseX <= 150) && (mouseY >= 50) && (mouseY <= 150)); }
В чем может быть подвох? В цикле?
В том что исходя из этого описания: client.write(val), где val - a value to send as a single byte (один байт - то есть один символ)
Если же невтерпеж отослать массив символов (что вы и пытаетесь сделать), используйте client.write(buf, len), где buf: an array to send as a series of bytes (byte or char) (массив), len: the length of the buffer (длина массива).
P.S. А возможно и так: сlient.println("R001N1");
P.P.S. Эм... Сорри - не посмотрел, что речь о processing, а судя по этому описанию данное возможно в processing. Хотя, я бы все-таки попробовал print.
В том что исходя из этого описания: client.write(val), где val - a value to send as a single byte (один байт - то есть один символ)
Если же невтерпеж отослать массив символов (что вы и пытаетесь сделать), используйте client.write(buf, len), где buf: an array to send as a series of bytes (byte or char) (массив), len: the length of the buffer (длина массива).
P.S. А возможно и так: сlient.println("R001N1");
P.P.S. Эм... Сорри - не посмотрел, что речь о processing, а судя по этому описанию данное возможно в processing. Хотя, я бы все-таки попробовал print.
в примере (который не мой скетч), если вместо 'H' поставить "R001N1', то ошибки так же нет.
ЗЫ пробую print
В том что исходя из этого описания: client.write(val), где val - a value to send as a single byte (один байт - то есть один символ)
Если же невтерпеж отослать массив символов (что вы и пытаетесь сделать), используйте client.write(buf, len), где buf: an array to send as a series of bytes (byte or char) (массив), len: the length of the buffer (длина массива).
P.S. А возможно и так: сlient.println("R001N1");
P.P.S. Эм... Сорри - не посмотрел, что речь о processing, а судя по этому описанию данное возможно в processing. Хотя, я бы все-таки попробовал print.
в примере (который не мой скетч), если вместо 'H' поставить "R001N1', то ошибки так же нет.
ЗЫ пробую print
Ну так и оставьте у себя не "R001N1", а 'R001N1' (надеюсь, разницу показывать не нужно ;) )
В том что исходя из этого описания: client.write(val), где val - a value to send as a single byte (один байт - то есть один символ)
Если же невтерпеж отослать массив символов (что вы и пытаетесь сделать), используйте client.write(buf, len), где buf: an array to send as a series of bytes (byte or char) (массив), len: the length of the buffer (длина массива).
P.S. А возможно и так: сlient.println("R001N1");
P.P.S. Эм... Сорри - не посмотрел, что речь о processing, а судя по этому описанию данное возможно в processing. Хотя, я бы все-таки попробовал print.
в примере (который не мой скетч), если вместо 'H' поставить "R001N1', то ошибки так же нет.
ЗЫ пробую print
Ну так и оставьте у себя не "R001N1", а 'R001N1' (надеюсь, разницу показывать не нужно ;) )
print не прошел,
про ' ' и " " я опечатался, имел ввиду " " работало в примере, в моем не работает, ошибка та же.
И вообще, я думаю, NullPointerException не связан с типом данных. скорее всего что то с client соединением, которое оказалось в цикле. Попробую вывести из цикла...
Ошибка найдена. Как обычно "сам дурак".
В строке 02 и 26 продублировал Client client;