Avatar billede musiigedeo Nybegynder
30. juli 2007 - 17:02 Der er 7 kommentarer

hvordan man lukker serial porten

Hey eksperter

Jeg bruger den følgende kode til at checke om serial porten er åbne, hvis den er åbne, lukker jeg den og åbner den igen. Men jeg får en exception på linjen markeret med ****. hvorfor gør jeg det?

portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement(); 
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                if (portId.getName().equals(SERIALPORT)) {
              try {
                  boolean owned = portId.isCurrentlyOwned();
                  String owner = portId.getCurrentOwner();
               
                  if(owned == true &&  owner == "MicroCOM"){//check whether the port is open
                      serialPort.close();//close the port****
                  }
                      serialPort = (SerialPort) portId.open("MicroCOM", 2000); //close
                      outputStream = serialPort.getOutputStream();
                      serialPort.addEventListener(this);
                        serialPort.notifyOnDataAvailable(true);
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);

                } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                }               
              }
          }
        }
Avatar billede musiigedeo Nybegynder
30. juli 2007 - 17:04 #1
Jeg har defineret serialPort i classens field som "SerialPort serialPort"
Avatar billede thesurfer Nybegynder
30. juli 2007 - 17:22 #2
Hvorfor ikke checke om den er lukket..?

Jeg aner intet om SerialPort, men mon ikke at du kan bruge noget i den stil?:

                      if ( !serialPort.closed() ) serialPort.close();//close the port****
Avatar billede thesurfer Nybegynder
30. juli 2007 - 17:24 #3
Muligvis:

isClosed()
IsClosed()
Avatar billede thesurfer Nybegynder
30. juli 2007 - 17:26 #4
Du kunne også bare smide det i en Try/Catch:

                if(owned == true &&  owner == "MicroCOM"){//check whether the port is open

try
{
serialPort.close();//close the port****
} catch(Exception e) {
// Der opstod en fejl..
// Du kan vælge at gøre noget her, hvis du vil..
}
                  }
Avatar billede thesurfer Nybegynder
30. juli 2007 - 17:29 #5
Hmm.. Den kan komme til at klage over, at serialPort er null, og derfor ikke kan lukkes, når du ikke har instantieret serialPort..

Har du instantieret serialPort før du bruger den i linien?:

serialPort.close();//close the port****
Avatar billede thesurfer Nybegynder
30. juli 2007 - 17:31 #6
Eksempel:

                  if(owned == true &&  owner == "MicroCOM" && serialPort != null){//check whether the port is open

Eller måske

&& typeof(serialPort) != null

Jeg mener at "typeof" er 1 ord..
Avatar billede mikkelbm Nybegynder
30. juli 2007 - 20:59 #7
En mulighed kunne jo også være, at du postede den exception du får. Den kan måske gøre fejlfinding en hel del nemmere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester