[Java - CommAPI] NulPointerException getBaudRate()

Pagina: 1
Acties:

  • Machiel21
  • Registratie: September 2001
  • Laatst online: 08-02-2024
Voor mijn project gebruik ik de comm API van Sun.
Nu heb ik de huidige instellingen nodig van de seriele poort(COM1).

Ik gebruik de volgende regels:

1 public static SerialPort serielePoort;
2 System.out.println(serielePoort.getBaudRate());
(regelnummers ter verduidelijking)

Als ik nu deze applicatie draai komt Java met de foutmelding NullPointerException en verwijst naar regel 2.

Wat doe ik hier verkeerd :?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Moet je niet je serielePoort initialiseren :?

dmv, new SerialPort();

  • Machiel21
  • Registratie: September 2001
  • Laatst online: 08-02-2024
Ik heb ontdekt dat getBaudRate() wel werkt als ik eerst de seriële poort instel in via de comm API.

Maar hoe kan ik de huidige instellingen te weten te komen zonder eerst de poort in te stellen?

De instellingen van Windows bekijken?
Heb begrepen dat ik daar JNI(:?) moet voor gebruiken, of kan het ook anders?

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Hmm, begrijp ik je nu verkeerd, of weet je niet dat je een object eerst moet initialiseren dmv wat boven staat.. ?! :?

  • Machiel21
  • Registratie: September 2001
  • Laatst online: 08-02-2024
1 public static SerialPort serielePoort;
2 public void verzenden()
3 {
4 try
5 {
6 serielePoort = (SerialPort)
7 poortID.open("Webcam-besturings-applicatie", 1000);
8 }
9 catch {PortInUseException piue)
10 {}
11
12 try
13 {
14 serielePoort.setSerialPortParams(pmBr, pmDb, pmSb,
15 pmP);
15a System.out.println("Baudrate = " +
15b serielePoort.getBaudRate() + "\n\r");

16 }
16 catch(UnsupportedCommOperationException ucoe)
17 {}
18
19 try
20 {
21 //hier wordt de data verzonden via de compoort.
22 }
23 catch(Exception e1)
24 {}
25 }
26
27 public void controleerPoort()
28 {
29 System.out.println("De instellingen zijn juist.\n\r");
30 System.out.println("Baudrate = " +
31 serielePoort.getBaudRate() + "\n\r");

32 System.out.println("Databits = " +
33 serielePoort.getDataBits() + "\n\r");
34 System.out.println("Stopbits = " +
35 serielePoort.getStopBits() + "\n\r");
36 System.out.println("Parity = " + serielePoort.getParity
37 () + "\n\r");
38 }
(regelnummers ter verduidelijking)

waarom werkt de vette regel niet in regels 30/31 maar wel in regels 15a/15b

new SerialPort() bij regels 30/31 geeft de foutmelding:
Cannot Instantiate javax.comm.SerialPort

Ik gebruik de IDE: IBM WebSphere Studio Application Developer (WSAD).

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Misschien hierom wel bij 15a/b:
code:
1
2
3
4
5
4 try
5 {
6 serielePoort = (SerialPort)
7 poortID.open("Webcam-besturings-applicatie", 1000);
8 }

?

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

in jou code is er geen mogelijkheid om te weten of er een exception gegeven wordt.
ik zou bij de catch(PortInUseException piuex) ff een system out geven.
bijvoorbeeld piuex.printStackTrace();

en als dan die exception gegeven wordt, is de variabele serielePoort dus niet geinitialiseerd en krijg je een nullpointer exception

(tenminste dit is een mogelijke verklaring)


edit: weet je zeker dat de method verzenden()
wordt aangeroepen VOORDAT de method controleerPoort() wordt aangeroepen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

offtopic:
Machiel21 je kan ook je code tussen [ code ] [ /code ] tags zetten en dan blijft het grafisch mooier.

bv
[code]class Persoon{
public void setVoornaam(){
}
}[/code]
maar je had hier regelnummers nodig dus jouw oplossing is dan erg praktisch.

  • Machiel21
  • Registratie: September 2001
  • Laatst online: 08-02-2024
Bedankt GoT'ers.

De oplossing was:

deze regels bij de regels 30/31 plaatsen.
code:
1
serielePoort = (SerialPort) poortID.open("Webcam-besturings-applicatie", 1000);

Hierdoor kreeg ik geen NullPointerException meer, maar nu een PortInUseException, maar dat is ook geen probleem meer :)
Pagina: 1