Hallo,
Ik ben bezig met een applicatie waar ik seriele data binnenhaal, en aan de hand daarvan een bepaalde functie aanroep. Als ik bv dat " 01 " binnenkrijg ga ik naar een case waar ik een desbetreffende functie aanroep.
Maar nu werk ik ook met een thread die constant aan het runnen is. Als ik een stukje seriele data binnenkrijg, bv " 02 " zet ik een waarde op true, waarbij dan in die thread een stukje code in uitvoering komt.
Maar nu wil ik in die thread terug een functie aanroepen uit m'n vorige klasse, waar ook de seriele data binnenkomt .. maar daarbij krijg ik constant een nullpointer exception
eventjes toelichten.
2 bestanden :
- Serial.java
- Sw_download.java
Serial.java, waar de seriele data binnenkomt, alsook de functie die ik in een andere thread wil aanroepen
sw_download.java, waar m'n thread in werking treed als het specifieke stukje seriele data binnenkomt
Hoe kan ik dus in m'n thread een functie in m'n klasse "Serieel" aanroepen,
Alvast bedankt!!
Ik ben bezig met een applicatie waar ik seriele data binnenhaal, en aan de hand daarvan een bepaalde functie aanroep. Als ik bv dat " 01 " binnenkrijg ga ik naar een case waar ik een desbetreffende functie aanroep.
Maar nu werk ik ook met een thread die constant aan het runnen is. Als ik een stukje seriele data binnenkrijg, bv " 02 " zet ik een waarde op true, waarbij dan in die thread een stukje code in uitvoering komt.
Maar nu wil ik in die thread terug een functie aanroepen uit m'n vorige klasse, waar ook de seriele data binnenkomt .. maar daarbij krijg ik constant een nullpointer exception
eventjes toelichten.
2 bestanden :
- Serial.java
- Sw_download.java
Serial.java, waar de seriele data binnenkomt, alsook de functie die ik in een andere thread wil aanroepen
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| package application; import java.io.*; import java.util.*; import javax.microedition.*; import java.lang.*; import javax.microedition.midlet.*; import com.siemens.icm.io.*; public class Serial extends Thread { Main main; Sw_download sw_download; ATCommand atcommand; CommConnection commConn; InputStream inStream; OutputStream outStream; HttpConnection connection; public static boolean running_download; // ----------------------------------- // Download software // ----------------------------------- public void request_update_selected_item() throws IOException{ // DE DESTBETREFFENDE FUNCTIE } // ----------------------------------- // Running Download // ----------------------------------- public static boolean runningDownload() { return running_download; } // --------------------------------- // Constructor // --------------------------------- public Serial(Main main) { super(); this.main = main; } // -------------------------------- // Uitvoering programma // -------------------------------- public void run () { try { while (Main.isWorking()) { int voor_nr = (inStream.read() | (inStream.read() << 8)); switch (voor_nr){ case 0x3034: // Request update selected item System.out.println("Request update selected item"); running_download = true; // HIERDOOR WORDT DE THREAD UITGEVOERD break; } } } catch(IOException e) { System.out.println(e); } try { main.destroyApp(true); } catch (MIDletStateChangeException ex) { ex.printStackTrace(); } } } |
sw_download.java, waar m'n thread in werking treed als het specifieke stukje seriele data binnenkomt
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| package application; import java.io.*; import java.util.*; import javax.microedition.*; import java.lang.*; import javax.microedition.midlet.*; import com.siemens.icm.io.*; public class Sw_download extends Thread { Main main; Serial serial; public Sw_download() { } public void run() { while (Main.isWorking()) { while (Serial.runningDownload()) { try { serial.request_update_selected_item(); } catch (IOException ex) { ex.printStackTrace(); } } } } } |
Hoe kan ik dus in m'n thread een functie in m'n klasse "Serieel" aanroepen,
Alvast bedankt!!