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;