Java applet pro XPort – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java applet pro XPort – Java – Fórum – Programujte.comJava applet pro XPort – Java – Fórum – Programujte.com

 

sputnikone+1
Věrný člen
28. 4. 2009   #1
-
0
-

Zdravím všecky,
mám takový menší problém. Píšu applet pro ethernetový modul XPort, ve kterém chci zobrazovat určité měřené hodnoty. Vytvořil jsem soubory: Xport.java - ten už byl hotový, jenom vytváří socket, načítá a odesílá data
Sensor.java - tělo appletu, které volá GUI
Gui.java - ten přepočítává a do labelů vypisuje hodnoty, v něm je právě problém



import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.util.*;

public class Gui extends Panel implements Runnable
{
private Thread mTimer;
private Label[][] mLabels;
private String savedData;
private Xport mXport;

public Gui(Xport xport)
{
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5,5,5,5);
setBackground(java.awt.Color.lightGray);
setSize(328, 446);

mXport = xport;
InitializeLabels(c);

mTimer = new Thread(this);
mTimer.start();
}

private void InitializeLabels(GridBagConstraints c)
{
mLabels = new Label[3][3];

for(int x = 0; x < 3; x++)
{
//projedeme misto a nalabelujeme
for(int y = 0; y < 3; y++)
{
mLabels[x][y] = new Label();
add(mLabels[x][y], c);
}

// nove labely do GUI
switch(x) {
case 0: addLabel("Napeti: ", mLabels[x][0], 0, 2*x, c);
break;
case 1: addLabel("NaPiC1: ", mLabels[x][0], 0, 2*x, c);
break;
case 2: addLabel("NaPiC2: ", mLabels[x][0], 0, 2*x, c);
break;
}
addLabel("Hodnota:", mLabels[x][1], 1, 2*x+1, c);
addLabel("N/A" , mLabels[x][2], 2, 2*x+1, c);
}
}

private void addLabel(String text, Label label, int x, int y, GridBagConstraints c)
{
// addLabel je fce usnadnujici pridani labelu, dalsi radek hlasi
// NullPointerException
label.setText(text);
c.gridx = x; c.gridy = y; c.gridwidth = 1; c.gridheight = 1;
c.weightx = 0.0; c.weighty = 0.0; c.anchor = GridBagConstraints.WEST;
add(label, c);
}

public void run()
{
Thread me = Thread.currentThread();
while (mTimer == me)
{
try
{
// tohle vlakno kazdou 1s
Thread.currentThread().sleep(1000);

// pokud nejsme pripojeni, pokracujeme
if(mXport == null || mXport.connected() == false)
continue;

// jinak muzeme prijimat
UpdateInput();
}
catch (InterruptedException e) { }
}
}

public void UpdateInput()
{
// nova data z XPortu
byte[] newData = mXport.receive();

//pokud nejsou nova data, neupdatuju
if(newData == null)
return;

// do GUI napisu nove hodnoty
updateOutput(newData);
}

private void updateOutput(byte[] data)
{
// zobrazujeme data z XPortu
int[] formattedData = formatData(data);

// projedu jiz formatovana vyst. data a vypisuji labely
for(int x = 0; x < 3; x++)
{
Integer sensorData = formattedData[x];

mLabels[x][2].setText(sensorData.toString());
}
}

private int[] formatData(byte[] rawData)
{
int[] finalData = new int[3];

for(int x = 46; x < 52; x=+2)
// preskocim na posledni napetovou hodnotu a NaPiCy
for(int y = 0; y < 3; y++)
{
finalData[y]=(byteToInt(rawData[x])*256+byteToInt(rawData[x+1]));
}

return finalData;
}

private int byteToInt(byte data)
{
// pri mezere vraci 0
if(data == 32)
return 0;

//jinak odecte ASCII kod 0
return data - 48;
}
}


Problém je ve fci addLabel, která generuje NullPointerException.
Přikládám i archiv se všemi soubory.

Nahlásit jako SPAM
IP: 82.209.55.–
D-Fox0
Stálý člen
28. 4. 2009   #2
-
0
-

Me teda cela funkce InitializeLabels() projela bez chyb. Takze nevim kde mohla vzniknout chyba. Hod sem celej vystup ty chyby.

Nahlásit jako SPAM
IP: 86.49.112.–
sputnikone+1
Věrný člen
29. 4. 2009   #3
-
0
-

Jak jsi to testoval, ja jsem to totiž nahrával přímo na ten XPort a chyba se objevila až za běhu na něm.

Nahlásit jako SPAM
IP: 82.209.55.–
D-Fox0
Stálý člen
1. 5. 2009   #4
-
0
-

Testoval jsem to jen na pc.. myslel sem, ze ti to chybu hazelo jen pri generovani gui.. zkusim se teda jeste na to mrknout. Ted me napada, jen jestli mas ty labely delklarovane, tak aby byly viditelne pro vsechny funkce, ktere ho pouzivaji. Jinak poprosim jestli by si to nemohl reuploadnout... je to totiz smazane :) a bodnul by i ten chybovi vystup. Nemam totiz, kde ten XPort poradne vyzkouset(pokud to tedy nelze nejak emulovat).

Nahlásit jako SPAM
IP: 86.49.112.–
sputnikone+1
Věrný člen
5. 5. 2009   #5
-
0
-

Už jsem to vyřešil zcela jinou verzí appletu, takže je to v pohodě :smile14:

Nahlásit jako SPAM
IP: 82.209.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Podobná vlákna

Java applet — založil raddar

Java applet — založil Leito

Object pro applet — založil VojtaK

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý